如下所示,当我们在测试时,有可能会遇到写一些工具平台,辅助脚本等需求,可能这些都是分布式部署的服务,我们再一些场景才需要使用redis的分布式锁来实现各个分布式服务端对数据的读写不会存在冲突。
redis_client = pyredis.make_redis_client("") # redis的服务名
# 获取一个锁
# lock_name:锁定名称
# acquire_time: 客户端等待获取锁的时间
# time_out: 锁的超时时间
def acquire_lock(lock_name, acquire_time=10, time_out=10):
"""获取一个分布式锁"""
identifier = str(uuid.uuid4())
end = time.time() + acquire_time
lock = "string:lock:" + lock_name
while time.time() < end:
if redis_client.setnx(lock, identifier):
# 给锁设置超时时间, 防止进程崩溃导致其他进程无法获取锁
redis_client.expire(lock, time_out)
return identifier
elif not