Redisを使用して分散ロックを実装する方法
1047 ワード
実現原理:Redisに基づいて単一スレッドで実行する.
目的:分散アプリケーションでの同時シリアル化を解決し、データベースの圧力を低減し、セキュリティ性能を向上させる
コード:
目的:分散アプリケーションでの同時シリアル化を解決し、データベースの圧力を低減し、セキュリティ性能を向上させる
コード:
import redis
# redis
redis_conn = redis.StrictRedis(host='127.0.0.1', port=6379)
def watch_lock():
#
while True:
redis_conn.expire('lock', 5)
class OrderView():
def get(self):
try:
lock_num = redis_conn.incr('lock', 1)
redis_conn.expire('lock', 15) # , redis
if lock_num == 1:
# ,
t1 = Thread(target=watch_lock)
t1.start()
# , , ,
# Response()
#
stop_thread(t1)
pass
else:
# ,
# Response()
pass
finally:
# ,
# , lock , 0
redis_conn.incr('lock', -1)