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