From 4d321ae069fce2c0f6f7884bec8fa6c4ec534d1a Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 03 八月 2023 18:25:33 +0800 Subject: [PATCH] redis连接池归还 --- db/redis_manager.py | 159 +++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 112 insertions(+), 47 deletions(-) diff --git a/db/redis_manager.py b/db/redis_manager.py index c8f2e2c..7e96a03 100644 --- a/db/redis_manager.py +++ b/db/redis_manager.py @@ -19,7 +19,7 @@ pool = pool_cache[db] else: pool = redis.ConnectionPool(host=config["host"], port=config["port"], password=config["pwd"], - db=db, decode_responses=True, max_connections=200) + db=db, decode_responses=True, max_connections=50) pool_cache[db] = pool self.pool = pool @@ -29,83 +29,148 @@ class RedisUtils: @classmethod - def get(cls, redis_, key): - logger_redis_debug.info("get:{}",key) - return redis_.get(key) + def get(cls, redis_, key, auto_free=True): + try: + logger_redis_debug.info("get:{}",key) + return redis_.get(key) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def scard(cls, redis_, key): - return redis_.scard(key) + def scard(cls, redis_, key, auto_free=True): + try: + return redis_.scard(key) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def delete(cls, redis_, key): - logger_redis_debug.info("delete:{}", key) - return redis_.delete(key) + def delete(cls, redis_, key, auto_free=True): + try: + logger_redis_debug.info("delete:{}", key) + return redis_.delete(key) + + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def keys(cls, redis_, key): - logger_redis_debug.info("keys:{}", key) - return redis_.keys(key) + def keys(cls, redis_, key, auto_free=True): + try: + logger_redis_debug.info("keys:{}", key) + return redis_.keys(key) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def set(cls, redis_, key, val): - logger_redis_debug.info("set:{}", key) - return redis_.set(key, val) + def set(cls, redis_, key, val, auto_free=True): + try: + logger_redis_debug.info("set:{}", key) + return redis_.set(key, val) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def setex(cls, redis_, key, expire, val): + def setex(cls, redis_, key, expire, val, auto_free=True): logger_redis_debug.info("setex:{}", key) - return redis_.setex(key, expire, val) + try: + return redis_.setex(key, expire, val) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def setnx(cls, redis_, key, val): - logger_redis_debug.info("setnx:{}", key) - return redis_.setnx(key, val) + def setnx(cls, redis_, key, val, auto_free=True): + try: + logger_redis_debug.info("setnx:{}", key) + return redis_.setnx(key, val) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def expire(cls, redis_, key, expire): - logger_redis_debug.info("expire:{}", key) - return redis_.expire(key, expire) + def expire(cls, redis_, key, expire, auto_free=True): + try: + logger_redis_debug.info("expire:{}", key) + return redis_.expire(key, expire) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def sadd(cls, redis_, key, val): - logger_redis_debug.info("sadd:{}", key) - return redis_.sadd(key, val) + def sadd(cls, redis_, key, val, auto_free=True): + try: + logger_redis_debug.info("sadd:{}", key) + return redis_.sadd(key, val) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def sismember(cls, redis_, key, val): - logger_redis_debug.info("sismember:{}", key) - return redis_.sismember(key, val) + def sismember(cls, redis_, key, val, auto_free=True): + try: + logger_redis_debug.info("sismember:{}", key) + return redis_.sismember(key, val) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def smembers(cls, redis_, key): - logger_redis_debug.info("smembers:{}", key) - return redis_.smembers(key) + def smembers(cls, redis_, key, auto_free=True): + try: + logger_redis_debug.info("smembers:{}", key) + return redis_.smembers(key) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def srem(cls, redis_, key, val): - logger_redis_debug.info("srem:{}", key) - return redis_.srem(key, val) + def srem(cls, redis_, key, val, auto_free=True): + try: + logger_redis_debug.info("srem:{}", key) + return redis_.srem(key, val) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def incrby(cls, redis_, key, num): - logger_redis_debug.info("incrby:{}", key) - return redis_.incrby(key, num) + def incrby(cls, redis_, key, num, auto_free=True): + try: + logger_redis_debug.info("incrby:{}", key) + return redis_.incrby(key, num) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def lpush(cls, redis_, key, val): - logger_redis_debug.info("lpush:{}", key) - return redis_.lpush(key, val) + def lpush(cls, redis_, key, val, auto_free=True): + try: + logger_redis_debug.info("lpush:{}", key) + return redis_.lpush(key, val) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def lpop(cls, redis_, key): - logger_redis_debug.info("lpop:{}", key) - return redis_.lpop(key) + def lpop(cls, redis_, key, auto_free=True): + try: + logger_redis_debug.info("lpop:{}", key) + return redis_.lpop(key) + finally: + if auto_free: + redis_.connection_pool.disconnect() @classmethod - def rpush(cls, redis_, key, val): - logger_redis_debug.info("rpush:{}", key) - return redis_.rpush(key, val) + def rpush(cls, redis_, key, val, auto_free=True): + try: + logger_redis_debug.info("rpush:{}", key) + return redis_.rpush(key, val) + finally: + if auto_free: + redis_.connection_pool.disconnect() -- Gitblit v1.8.0