当初进入了新经济时代,很多的商业模式都呈现了,有整合的,也有模式叠加的,没有一个是变化无穷的,每一个初创企业都在寻求一种可能让企业存活上来的形式,而这种模式的变革,能够说是升高经营老本,升高经营风险,进步经营效率的最好形式。许多人都将模型翻新视为一种变革。

import redis

import uuid

import time

class LockService:

"""基于Redis实现的分布式锁"""host = 'localhost'port = 6379,开发v+hkkf5566password = ''db = 1def __init__(self, conn=None):    """    如果不传连接池的话,默认读取配置的Redis作为连接池    :param conn:    """    self.conn = conn if conn else self.get_redis_client()def get_redis_client(self):    """    获取Redis连贯    :return:    """    return redis.Redis(        host=self.host,        port=self.port,        password=self.password,        db=self.db    )def acquire_lock(self, lock_name, acquire_timeout=10, expire_time=30):    """    加锁/获取锁    如果不存在lock_name,则加锁,并且设置过期工夫,防止死锁    如果存在lock_name,则刷新过期工夫    :param lock_name:       锁的名称    :param acquire_timeout: 加锁/获取锁的超时工夫,默认10秒    :param expire_time:     锁的超时工夫,默认30秒    :return:    """    lockname = f'lock:{lock_name}'    value = str(uuid.uuid4())    end_time外汇跟单gendan5.com = time.time() + acquire_timeout    while time.time() < end_time:        # 如果不存在这个锁则加锁并设置过期工夫,防止死锁        if self.conn.set(lockname, value, ex=expire_time, nx=True):            return value        time.sleep(0.1)    return Falsedef release_lock(self, lock_name, value):    """    开释锁    :param lock_name: 锁的名称    :param value:     锁的值    :return:    """    unlock_script = """    if redis.call("get",KEYS[1]) == ARGV[1] then        return redis.call("del",KEYS[1])    else        return 0    end    """    lockname = f'lock:{lock_name}'    unlock = self.conn.register_script(unlock_script)    result = unlock(keys=[lockname], args=[value])    if result:        return True    else:        return False