redis分布式锁代码
时间: 2023-03-02 18:02:47 浏览: 10
以下是 Redis 分布式锁的简单代码实现(使用 Python 语言):
```
import redis
import time
# 连接到 Redis 服务器
redis_client = redis.Redis(host='localhost', port=6379, db=0)
def acquire_lock(lock_name, acquire_time=10):
"""获取分布式锁"""
lock_value = str(time.time() + acquire_time + 1)
result = redis_client.setnx(lock_name, lock_value)
if result:
# 获取锁成功
return True
else:
lock_time = redis_client.get(lock_name)
if lock_time and float(lock_time) < time.time():
# 锁已经过期,可以尝试获取锁
old_lock_time = redis_client.getset(lock_name, lock_value)
if old_lock_time == lock_time:
# 获取锁成功
return True
# 获取锁失败
return False
def release_lock(lock_name):
"""释放分布式锁"""
redis_client.delete(lock_name)
```
使用示例:
```
if acquire_lock('my_lock'):
try:
# 在这里执行你的代码
print('执行代码...')
time.sleep(5)
finally:
release_lock('my_lock')
else:
print('获取锁失败,不执行代码')
```
注意:这只是一个简单的示例,在生产环境中使用前需要进行更多的测试和优化。
阅读全文