Redisを使用して分散ロックを実装する方法


実現原理: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)