redis的setnx设置分布式锁
时间: 2023-11-22 18:50:55 浏览: 99
详解使用Redis SETNX 命令实现分布式锁
5星 · 资源好评率100%
Redis的setnx命令可以用于设置分布式锁。具体实现方法如下:
1.使用setnx命令尝试获取锁,如果返回1则表示获取锁成功,否则获取锁失败。
2.如果获取锁成功,则设置锁的过期时间,避免锁一直被占用而无法释放。
3.执行业务代码。
4.执行完业务代码后,使用del命令删除锁。
下面是一个示例代码:
```python
import redis
import time
# 连接Redis
r = redis.Redis(host='127.0.0.1', port=6379)
# 获取锁
lock_key = 'my_lock'
lock_value = int(time.time())
if r.setnx(lock_key, lock_value):
# 设置锁的过期时间为10秒
r.expire(lock_key, 10)
# 执行业务代码
print('do something...')
# 删除锁
r.delete(lock_key)
else:
print('get lock failed')
```
需要注意的是,分布式锁的实现需要考虑到多个进程或者多台机器之间的并发访问,因此需要使用分布式锁的场景下,建议使用专业的分布式锁组件,例如Redlock、Zookeeper等。
阅读全文