Redis用来做分布式锁 代码示例
时间: 2024-04-02 14:10:28 浏览: 24
下面是使用 Redis 实现分布式锁的 Python 代码示例:
```python
import redis
# 连接 Redis
redis_client = redis.StrictRedis(host='localhost', port=6379, db=0)
# 获取锁
def acquire_lock(lock_name, acquire_timeout=10):
# 生成 Redis 锁的 key
lock_key = f'lock:{lock_name}'
# 获取锁的超时时间
end_time = time.time() + acquire_timeout
while time.time() < end_time:
# 尝试获取锁
if redis_client.setnx(lock_key, "locked"):
return True
# 如果获取锁失败,则等待一段时间后重试
time.sleep(0.1)
return False
# 释放锁
def release_lock(lock_name):
# 生成 Redis 锁的 key
lock_key = f'lock:{lock_name}'
# 删除 Redis 锁
redis_client.delete(lock_key)
```
在使用分布式锁时,需要注意以下几点:
1. 锁的名称应该是唯一的,以避免不同的应用程序或线程之间的混淆。
2. 获取锁时需要设置一个超时时间,以防止锁长时间占用而导致死锁。
3. 在释放锁时,需要检查当前线程是否持有该锁,以避免释放其他线程的锁。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)