
本文共 5248 字,大约阅读时间需要 17 分钟。
Macaroni Repository - Redis���������������������������������������������
������������������������������������������������������������������������������������������������������ Drupal ������������������������������������Redis SETNX ��������������������� Redisson ������������������������������������������������������
1. ���������������������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������ Tomcat1 ��� Tomcat2��������������� Nginx ������������������������ference to Redis ������������������ 100 ������������������������������������������ Tomcat1������������������������������ Tomcat2������ Tomcat1 ���������������������������������������������������������������������Tomcat2 ��������������������������� 100��������������� gcd.lock ������������������������������������������������
@RestControllerpublic class IndexController { @Autowired private RedisTemplateredisTemple; @RequestMapping("/deductStock") public String deductStock() { synchronized (this) { int stock = Integer.parseInt(redisTemple.opsForValue().get("stock")); if (stock > 0) { int realStock = stock - 1; redisTemple.opsForValue().set("stock", realStock + ""); System.err.println("������������������������������" + realStock); } else { System.err.println("��������������������������� !"); } } return ""; }}
2. Redis SETNX ������������������������������������������
Redis ��������� SETNX ���������������������������������������������������������������
@RestControllerpublic class IndexController { @Autowired private RedisTemplateredisTemple; @RequestMapping("/deductStock") public String deductStock() { String lockKey = "product_001"; String clientId = UUID.randomUUID().toString(); try { // ��������������������������� Boolean result = redisTemple.opsForValue().setIfAbsent(lockKey, "lzp"); // ��������������������������������������������������������� Boolean result = redisTemple.opsForValue().setIfAbsent(lockKey, clientId, 10, TimeUnit.SECONDS); if (!result) { return "���������������������������!"; } int stock = Integer.parseInt(redisTemple.opsForValue().get("stock")); if (stock > 0) { int realStock = stock - 1; redisTemple.opsForValue().set("stock", realStock + ""); System.err.println("������������������������������������" + realStock); } else { System.err.println("��������������������������������� !"); } } finally { // ������������������������������������������������ if (clientId.equals(redisTemple.opsForValue().get(lockKey))) { redisTemple.delete(lockKey); } } return ""; }}
3. ������ Redisson ���������������
���������������������������Redisson ��������������������������������������������������������������������������������������������������� Redisson ���������������������������
org.redisson redisson 3.2.3
������������������������������������������������������������������������������������ Redisson ������������������������������ ���������������������������������������������������������������������������������������������
@RestControllerpublic class IndexController { @Autowired private RedisTemplateredisTemple; @RequestMapping("/deductStock") public String deductStock() { String lockKey = "product_001"; String clientId = UUID.randomUUID().toString(); try { // Redisson ��������������������������������� final RedisLock lock = redisTemple.lock(lockKey); try { boolean locked = lock.tryLock(); if (!locked) { return "���������������������������!"; } int stock = Integer.parseInt(redisTemple.opsForValue().get("stock")); if (stock > 0) { int realStock = stock - 1; redisTemple.opsForValue().set("stock", realStock + ""); System.err.println("������������������������������������" + realStock); } else { System.err.println("��������������������������������� !"); } } finally { lock.unlock(); } } catch (Exception e) { System.err.println("������������������������ Th��� ����� Krishan !"); } finally { // ������������������������������������������������ // ������������������ finally ��������������������������������� } return ""; }}
������������ Redisson������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
发表评论
最新留言
关于作者
