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

Redis 并发访问控制 - 锁

时间:2017-01-23 18:58:45      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:time   val   forever   value   log   访问控制   问控制   delete   处理   

使用锁

1)setnx(lockkey, 当前时间+过期超时时间) ,如果返回1,则获取锁成功;如果返回0则没有获取到锁,转向2。
2.)get(lockkey)获取值oldExpireTime ,并将这个value值与当前的系统时间进行比较,如果小于当前系统时间,则认为这个锁已经超时,可以允许别的请求重新获取,转向3。
3.)计算newExpireTime=当前时间+过期超时时间,然后getset(lockkey, newExpireTime) 会返回当前lockkey的值currentExpireTime。
4.)判断currentExpireTime与oldExpireTime 是否相等,如果相等,说明当前getset设置成功,获取到了锁。如果不相等,说明这个锁又被别的请求获取走了,那么当前请求可以直接返回失败,或者继续重试。
5) 在获取到锁之后,当前线程可以开始做自增操作,当处理完毕后,比较自己的处理时间和对于锁设置的超时时间,如果小于锁设置的超时时间,则直接执行delete释放锁;如果大于锁设置的超时时间,则不需要再锁进行处理。

 

引用自: http://www.cnblogs.com/iforever/p/5796902.html

Redis 并发访问控制 - 锁

标签:time   val   forever   value   log   访问控制   问控制   delete   处理   

原文地址:http://www.cnblogs.com/garyblog/p/6344511.html

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