91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

redis怎么實現并發鎖

小億
122
2023-08-30 11:46:57
欄目: 云計算

Redis可以使用SETNX(SET if Not eXists)命令實現并發鎖。以下是一個使用Redis實現并發鎖的示例代碼:

import redis
import time
def acquire_lock(redis_conn, lock_name, acquire_timeout=10, lock_timeout=10):
"""
獲取鎖
"""
end_time = time.time() + acquire_timeout
while time.time() < end_time:
if redis_conn.set(lock_name, "locked", nx=True, ex=lock_timeout):
return True
time.sleep(0.001)
return False
def release_lock(redis_conn, lock_name):
"""
釋放鎖
"""
redis_conn.delete(lock_name)
# 創建Redis連接
redis_conn = redis.Redis(host='localhost', port=6379, db=0)
# 獲取鎖
if acquire_lock(redis_conn, "my_lock"):
print("獲取鎖成功")
# 執行需要加鎖的操作
# ...
# 釋放鎖
release_lock(redis_conn, "my_lock")
else:
print("獲取鎖失敗,其他線程正在使用鎖")

在上述代碼中,acquire_lock函數會嘗試獲取鎖,若成功獲取到鎖,則返回True;若在指定的acquire_timeout時間內未能獲取到鎖,則返回False。

release_lock函數用于釋放鎖,即刪除鎖對應的key。

需要注意的是,為了防止鎖的過期時間設置得過長導致死鎖,建議在使用完鎖后手動調用release_lock函數釋放鎖,而不要依賴鎖的自動過期。

0
饶平县| 阿坝| 陇西县| 桐庐县| 郑州市| 讷河市| 潼关县| 岑巩县| 田阳县| 玉田县| 合山市| 天气| 三门县| 石渠县| 晋城| 虹口区| 九龙县| 昭觉县| 买车| 汉沽区| 无为县| 上林县| 中牟县| 青阳县| 泰顺县| 汽车| 禄劝| 韩城市| 昆明市| 永定县| 陈巴尔虎旗| 吐鲁番市| 宜州市| 蚌埠市| 抚宁县| 渭源县| 南靖县| 共和县| 监利县| 右玉县| 靖江市|