redis分布式锁 python
时间: 2023-10-11 07:13:41 浏览: 117
Redis分布式锁是使用Redis作为分布式系统中的锁机制,以保证在多个节点上的并发操作的一致性。在Python中,可以使用redis-py库来实现Redis分布式锁。
下面是一个示例代码,演示如何使用redis-py实现Redis分布式锁:
```python
import redis
import time
class RedisDistributedLock:
def __init__(self, redis_client, lock_name, lock_timeout=10):
self.redis_client = redis_client
self.lock_name = lock_name
self.lock_timeout = lock_timeout
def acquire_lock(self):
while True:
# 尝试获取锁
result = self.redis_client.set(self.lock_name, "locked", ex=self.lock_timeout, nx=True)
if result:
return True
else:
# 等待一段时间后再次尝试获取锁
time.sleep(0.1)
def release_lock(self):
self.redis_client.delete(self.lock_name)
# 创建Redis连接
redis_client = redis.Redis()
# 创建锁对象
lock = RedisDistributedLock(redis_client, "mylock")
# 获取锁
if lock.acquire_lock():
try:
# 执行需要加锁的操作
print("Do something...")
finally:
# 释放锁
lock.release_lock()
```
在上面的代码中,首先创建了一个`RedisDistributedLock`类来封装了获取锁和释放锁的逻辑。在获取锁时,使用Redis的`SET`命令设置了一个键值对,如果设置成功,则说明获取到了锁。在释放锁时,使用Redis的`DELETE`命令删除了该键值对。
这样,在多个进程或者多个节点中使用相同的`lock_name`来创建`RedisDistributedLock`对象,就可以实现分布式锁的功能了。
阅读全文