redis分布式锁代码示例
时间: 2024-08-12 11:06:17 浏览: 49
Redis分布式锁是一种常见的并发控制机制,用于在分布式系统中避免资源争抢。以下是一个简单的Python示例,使用`redis`库实现分布式锁:
```python
import redis
import time
class DistributedLock:
def __init__(self, lock_name, expire_time=60):
self.lock_name = lock_name
self.expire_time = expire_time
self.redis_client = redis.Redis(host='localhost', port=6379, db=0) # 连接配置
def acquire(self):
while True:
if self.redis_client.setnx(self.lock_name, str(time.time())):
# 使用setnx原子操作设置键值,并检查是否成功创建。如果成功,立即返回True
print("Acquired lock")
return True
elif not self.redis_client.ttl(self.lock_name): # 如果锁已过期,尝试获取
self.redis_client.expire(self.lock_name, self.expire_time)
else:
time.sleep(0.01) # 等待0.01秒再试
def release(self):
self.redis_client.delete(self.lock_name)
print("Released lock")
# 使用示例
lock = DistributedLock('my_lock')
try:
lock.acquire()
# 执行需要锁保护的操作...
finally:
lock.release()
```
在这个例子中,`acquire()`方法试图获取锁,如果锁已被其他进程持有,它会进入循环并等待,直到锁释放。当`release()`方法执行时,删除锁,允许其他进程获取。
阅读全文