码迷,mamicode.com
首页 > 其他好文 > 详细

redis 锁

时间:2019-06-17 01:16:40      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:结束   sleep   释放   ini   init   RoCE   class   去重   art   


import threading
import time

from redis import Redis



class Myredis(Redis):
    def __init__(self):
        super(Myredis, self).__init__(host="192.168.31.21", port=6379, db=0, password="a123456")
    def mysetex(self,name,time,value):
        print("this")
        set_sign = self.setex(name,time,value)
        if set_sign:
            t1 = threading.Thread(target=self.whileSetTime,args=(name, time))
            t1.start()
            print("start")
            print("my_process")
            return 1
        else:
            print("锁被占用直接结束")  
            return 0
    def whileSetTime(self,name,set_time):
        set_time_p = set_time/2
        self.over_sign = 1
        print(set_time_p)
        while(1):
            time.sleep(set_time_p)
            print("set time")
            self.expire(name,set_time)
            if not self.over_sign:
                self.delete(name)
                return 0



A = Myredis()
a= "test4"
A.mysetex(a,4,"2")
time.sleep(6)
print(A.get(a),A.ttl(a))
print("my work")
A.over_sign = 0
print("work is end")
  • 设定锁当,程序未执行完,过期时间没到怎么办,锁就会被其他进程使用,
  • 这里是现有业务的时候, 去取得锁,会起一个线程已知去重新 设定 过期时间, 只要程序执行完,通过释放 设定过期时间的线程取释放锁,解决了 业务未完,锁被其他线程占用
  • 而当程序奔溃的时候,等待最后一次过期时间结束,其他进程也可以使用

redis 锁

标签:结束   sleep   释放   ini   init   RoCE   class   去重   art   

原文地址:https://www.cnblogs.com/wanderingfish/p/11037439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!