欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

redis的分布式锁

程序员文章站 2022-05-16 23:20:23
在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

相关标签: redis