Python Redis 实现分布式锁代码示例
以下是一个基于 Redis 的分布式锁的示例代码:
import redis
import time
class DistributedLock:
def __init__(self, redis_client, lock_key, timeout=10):
self.redis_client = redis_client
self.lock_key = lock_key
self.timeout = timeout
self.acquired = False
def acquire(self):
start_time = time.time()
while time.time() - start_time < self.timeout:
result = self.redis_client.set(self.lock_key, 1, nx=True, ex=self.timeout)
if result:
self.acquired = True
return True
time.sleep(0.1)
return False
def release(self):
if self.acquired:
self.redis_client.delete(self.lock_key)
self.acquired = False
该示例代码中,我们使用 Redis 的 set 命令来实现分布式锁。在 acquire 方法中,我们循环尝试获取锁,直到超时或者成功获取到锁为止。在 release 方法中,我们释放锁。
需要注意的是,由于网络延迟等因素,分布式锁并不是绝对可靠的。因此,我们需要在代码中加入一些容错机制,例如设置超时时间、重试机制等。
原文地址: https://www.cveoy.top/t/topic/lOoc 著作权归作者所有。请勿转载和采集!