2018-09-03 Redis notes

2021-02-18  本文已影响0人  尖头核桃

Summary from Redis 深度历险

分布式锁

  1. 原子问题 To ensure the automic
setnx lock:beihanz true 
expire lock:beihanz 5
--> 
set lock:beihanz true ex 5 nx 
  1. 超时问题
    Redis 的分布式锁不能解决超时问题,如果在加锁和释放锁之间的逻辑执行的太长,以至于超出了锁的超时限制,就会出现问题。因为这时候锁过期了,第二个线程重新持有了这把锁,但是紧接着第一个线程执行完了业务逻辑,就把锁给释放了,第三个线程就会在第二个线程逻辑执行完之间拿到了锁。
    解决方案:使用随机数作为锁,然后再释放锁的时候判断是不是当前随机数。
  2. 实现可重入
    使用ThreadLocal 记录当前锁的计数

延时队列

上一篇 下一篇

猜你喜欢

热点阅读