当前位置: 移动技术网 > IT编程>数据库>Redis > redis的分布式锁

redis的分布式锁

2020年10月10日  | 移动技术网IT编程  | 我要评论
在redis中,可能涉及多个进程对同一个资源进行修改,如此便容易产生死锁等问题所以有了redis的锁机制,setnx represent set if not exist127.0.0.1:6379> setnx lock:codehole true // 加锁(integer) 1127.0.0.1:6379> del lock:codehole // 删除锁(integer) 1在我们的代码中通常先加锁,然后再进行一些逻辑性操作,最后删除锁但如果中间的逻辑代码出现
在redis中,可能涉及多个进程对同一个资源进行修改,如此便容易产生死锁等问题
所以有了redis的锁机制,setnx represent set if not exist

127.0.0.1:6379> setnx lock:codehole true   // 加锁
(integer) 1
127.0.0.1:6379> del lock:codehole    // 删除锁
(integer) 1

在我们的代码中通常先加锁,然后再进行一些逻辑性操作,最后删除锁
但如果中间的逻辑代码出现问题,锁得不到释放就会阻塞后续的操作,因此有了expire(expire time)

127.0.0.1:6379> setnx lock:codehole true
(integer) 1
127.0.0.1:6379> expire lock:codehole 5   // 5s timeout
(integer) 1
127.0.0.1:6379> del lock:codehole
(integer) 0

但是在setnx和expire之间是两个步骤,如果中途断点等问题,expire就得不到执行
在Redis 2.8中,作者为了解决这个问题,对setnx进行了扩展

127.0.0.1:6379> set lock:codehole true ex 5 nx
OK
127.0.0.1:6379> del lock:codehole
(integer) 0

本文地址:https://blog.csdn.net/weixin_43734271/article/details/108996796

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网