"""
|
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, _async=False):
|
__start_time = time.time()
|
try:
|
return redis_.delete(key)
|
finally:
|
if _async:
|
logger_redis_debug.info("delete_async({}):{}", round((time.time() - __start_time) * 1000, 3), key)
|
else:
|
logger_redis_debug.info("delete({}):{}", round((time.time() - __start_time) * 1000, 3), key)
|
if auto_free:
|
# redis_.connection_pool.disconnect()
|
pass
|
|
@classmethod
|
def delete_async(cls, redis_, key, auto_free=True):
|
Thread(target=lambda: cls.delete(redis_, key, auto_free,_async=True)).start()
|
|
@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, _async = False):
|
__start_time = time.time()
|
try:
|
return redis_.setex(key, expire, val)
|
finally:
|
if _async:
|
logger_redis_debug.info("setex_async({}):{}", round((time.time() - __start_time) * 1000, 3), key)
|
else:
|
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,_async=True)).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, _async=False):
|
__start_time = time.time()
|
try:
|
return redis_.incrby(key, num)
|
finally:
|
if _async:
|
logger_redis_debug.info("incrby_async({}):{}", round((time.time() - __start_time) * 1000, 3), key)
|
else:
|
logger_redis_debug.info("incrby({}):{}", round((time.time() - __start_time) * 1000, 3), key)
|
if auto_free:
|
# redis_.connection_pool.disconnect()
|
pass
|
|
@classmethod
|
def incrby_async(cls, redis_, key, num, auto_free=True):
|
Thread(target=lambda: cls.incrby(redis_, key, num, auto_free)).start()
|
|
@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()
|