Python Redis 分布式锁实现 - 简洁高效
以下是一个简单的 Redis 分布式锁的实现,使用 'setnx' 命令和 'expire' 命令:
import redis
import time
class RedisLock:
def __init__(self, redis_client, key, expire_time=10):
self.redis_client = redis_client
self.key = key
self.expire_time = expire_time
def acquire(self):
while True:
lock = self.redis_client.setnx(self.key, time.time())
if lock:
self.redis_client.expire(self.key, self.expire_time)
return True
else:
time.sleep(0.1)
def release(self):
self.redis_client.delete(self.key)
使用方法:
redis_client = redis.Redis(host='localhost', port=6379, db=0)
my_lock = RedisLock(redis_client, 'my_lock_key', expire_time=10)
if my_lock.acquire():
try:
# 临界区代码
pass
finally:
my_lock.release()
原文地址: https://www.cveoy.top/t/topic/lSsB 著作权归作者所有。请勿转载和采集!