以下是一个基于 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 方法中,我们释放锁。

需要注意的是,由于网络延迟等因素,分布式锁并不是绝对可靠的。因此,我们需要在代码中加入一些容错机制,例如设置超时时间、重试机制等。

Python Redis 实现分布式锁代码示例

原文地址: https://www.cveoy.top/t/topic/lOoc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录