Example Analysis of Redis distributed Lock
Editor to share with you the example analysis of Redis distributed locks, I believe that most people do not know much about it, so share this article for your reference, I hope you can learn a lot after reading this article, let's go to know it!
First version:
@ Override public Long set (String key,T value, Long cacheSeconds) {if (value instanceof HashMap) {BoundHashOperations valueOperations = redisTemplate.boundHashOps (key); valueOperations.putAll ((Map) value); valueOperations.expire (cacheSeconds, TimeUnit.SECONDS) } else {/ / use map to store BoundHashOperations valueOperations = redisTemplate.boundHashOps (key); valueOperations.put (key, value); / / second valueOperations.expire (cacheSeconds, TimeUnit.SECONDS);} return null } @ Override public void del (String key) {redisTemplate.delete (key);}
Set and del are used to complete the occupation and release of locks. Later tests show that set is not thread-safe and often leads to data inconsistency in the case of concurrency.
Second version:
/ * * distributed lock * @ param range lock length allows how many requests to preempt resources * @ param key * @ return * / public boolean getLock (int range, String key) {ValueOperations valueOper1 = template.opsForValue (); return valueOper1.increment (key, 1)