写出redis分布式锁的代码
时间: 2024-05-25 22:09:06 浏览: 9
好的,以下是一个简单的Redis分布式锁的Python代码示例:
```python
import redis
class RedisLock:
def __init__(self, redis_client, key, timeout=10):
self.redis = redis_client
self.key = key
self.timeout = timeout
self.locked = False
def acquire(self):
# 获取锁
while not self.locked:
self.locked = self.redis.set(self.key, 1, ex=self.timeout, nx=True)
if self.locked:
return True
return False
def release(self):
# 释放锁
self.redis.delete(self.key)
self.locked = False
```
使用时需要先实例化一个RedisLock对象,然后调用`acquire`方法获取锁,调用`release`方法释放锁。在获取锁时,使用`set`命令在Redis中创建一个带有过期时间的键,并设置了`nx=True`参数,这样可以确保只有一个客户端可以成功创建这个键,其他客户端都会因为键已存在而获取锁失败。