码迷,mamicode.com
首页 > 其他好文 > 详细

redis应用-分布式锁

时间:2018-08-12 17:35:19      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:逻辑   限制   释放   bsp   red   加锁   解决   不能   需要   

一个操作要修改用户的状态,修改状态需要先读出用户的状态,在内存里进行修改,改完了再存回去。如果这样的操作同时进行了,就会出现并发问题,因为读取和保存状态这两个操作不是原子的。

set lock:codehole true ex 5 nx

5秒之内持有锁,ex:超时时间   nx:当key不存在时创建

Redis 的分布式锁不能解决超时问题,如果在加锁和释放锁之间的逻辑执行的太长,以至于超出了锁的超时限制,就会出现问题。因为这时候锁过期了,第二个线程重新持有了这把锁,但是紧接着第一个线程执行完了业务逻辑,就把锁给释放了,第三个线程就会在第二个线程逻辑执行完之间拿到了锁。

为了避免这个问题,Redis 分布式锁不要用于较长时间的任务。

 

redis应用-分布式锁

标签:逻辑   限制   释放   bsp   red   加锁   解决   不能   需要   

原文地址:https://www.cnblogs.com/yourscgg/p/9463009.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!