以下是一个简单的 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()
Python Redis 分布式锁实现 - 简洁高效

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

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