""" redis管理器 """ import time from threading import Thread import redis import constant from log_module.log import logger_redis_debug from utils import tool config = constant.REDIS_CONFIG pool_caches = [redis.ConnectionPool(host=config["host"], port=config["port"], password=config["pwd"], db=db, decode_responses=True, max_connections=50) for db in range(16)] class RedisManager: def __init__(self, db=config["db"]): self.pool = pool_caches[db] self.db = db def getRedis(self): return redis.Redis(connection_pool=self.pool) def getRedisNoPool(self): return redis.Redis(host=config["host"], port=config["port"], password=config["pwd"], db=self.db, decode_responses=True) class RedisUtils: @classmethod def get(cls, redis_, key, auto_free=True): __start_time = time.time() try: return redis_.get(key) finally: logger_redis_debug.info("get({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def scard(cls, redis_, key, auto_free=True): __start_time = time.time() try: return redis_.scard(key) finally: logger_redis_debug.info("scard({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def delete(cls, redis_, key, auto_free=True): __start_time = time.time() try: return redis_.delete(key) finally: logger_redis_debug.info("delete({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def keys(cls, redis_, key, auto_free=True): __start_time = time.time() try: logger_redis_debug.info("keys(start):{}", key) return redis_.keys(key) finally: logger_redis_debug.info("keys({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def set(cls, redis_, key, val, auto_free=True): __start_time = time.time() try: return redis_.set(key, val) finally: logger_redis_debug.info("set({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def setex(cls, redis_, key, expire, val, auto_free=True): time.sleep(1) __start_time = time.time() try: return redis_.setex(key, expire, val) finally: logger_redis_debug.info("setex({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def setex_async(cls, redis_, key, expire, val, auto_free=True): Thread(target=lambda: cls.setex(redis_, key, expire, val, auto_free)).start() @classmethod def setnx(cls, redis_, key, val, auto_free=True): __start_time = time.time() try: return redis_.setnx(key, val) finally: logger_redis_debug.info("setnx({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def expire(cls, redis_, key, expire, auto_free=True): __start_time = time.time() try: return redis_.expire(key, expire) finally: logger_redis_debug.info("expire({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def sadd(cls, redis_, key, val, auto_free=True): __start_time = time.time() try: return redis_.sadd(key, val) finally: logger_redis_debug.info("sadd({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def sismember(cls, redis_, key, val, auto_free=True): __start_time = time.time() try: return redis_.sismember(key, val) finally: logger_redis_debug.info("sismember({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def smembers(cls, redis_, key, auto_free=True): __start_time = time.time() try: return redis_.smembers(key) finally: logger_redis_debug.info("smembers({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def srem(cls, redis_, key, val, auto_free=True): __start_time = time.time() try: return redis_.srem(key, val) finally: logger_redis_debug.info("srem({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def incrby(cls, redis_, key, num, auto_free=True): __start_time = time.time() try: return redis_.incrby(key, num) finally: logger_redis_debug.info("incrby({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def lpush(cls, redis_, key, val, auto_free=True): __start_time = time.time() try: return redis_.lpush(key, val) finally: logger_redis_debug.info("lpush({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def lpop(cls, redis_, key, auto_free=True): __start_time = time.time() try: return redis_.lpop(key) finally: logger_redis_debug.info("lpop({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def rpush(cls, redis_, key, val, auto_free=True): __start_time = time.time() try: return redis_.rpush(key, val) finally: logger_redis_debug.info("rpush({}):{}", round((time.time() - __start_time) * 1000, 3), key) if auto_free: # redis_.connection_pool.disconnect() pass @classmethod def realse(cls, redis_): pass if __name__ == "__main__": time1 = time.time() RedisUtils.setex_async(RedisManager(0).getRedis(), "test123123", tool.get_expire(), "123213") print(time.time() - time1) input()