import redis
import globalvarmodel.global_var_model as gl
# 拿到一个redis的连接池
RredisPool = redis.ConnectionPool(host=gl.redis_host, port=gl.redis_port, max_connections=20,password=gl.redis_psw , db=gl.redis_db )
conn = redis.Redis(connection_pool=RredisPool,decode_responses=True)
def getCoon():
RredisPool = redis.ConnectionPool(host=gl.redis_host, port=gl.redis_port, max_connections=20, password=gl.redis_psw,db=gl.redis_db)
conn = redis.Redis(connection_pool=RredisPool, decode_responses=True)
return conn
def ExeceSet(name,value):
conn.set(name,value)
def ExeceSetTimeout(name,value,timeout):
conn.set(name,value,timeout)
def ExeceGet(name):
return conn.get(name)
def ExeceGetAll(name):
retlist=[]
for keytem in conn.keys(name):
retlist.append(conn.get(keytem))
return retlist
def ExeceLpush(name,value):
conn.lpush(name,value)
def ExeceRpush(name,value):
conn.rpush(name,value)
def ExeceRpushTimeout(name,timeout,value):
conn.rpush(name,value)
conn.expire(name,timeout)
def ExeceRpushEx(name,value):
conn.rpush(name,value)
def ExeceLrange(name):
return conn.lrange(name, 0, 50);
def ExeceLrangeAll(name):
return conn.lrange(name,0,-1);
def ExeceLpop(name):
return conn.lpop(name)
def ExecValue(data):
a=str(data);
b = a.replace('\'','\'\'');
if(b.__eq__("None")):
b="";
if(b.__eq__("nan")):
b="";
return b;
def ClearRedisDB():
for keytem in conn.keys():
conn.delete(keytem)
if __name__ == '__main__':
value1='Today is sunny'
value2='今天是个好天气'
ExeceSetTimeout('key::1',value1,1000)
ExeceSetTimeout('key::2',value2,1000)
print(conn.get('key::*'))
print(conn.keys('key::*'))
for keytem in conn.keys():
print(keytem)
print(ExeceGetAll("key::*"))
#ClearRedisDB()
这段Python代码是一个使用Redis数据库的简单客户端,它通过redis
库与Redis服务器进行交互。代码中定义了多个函数,用于执行不同的Redis操作,如设置键值对、获取键值、列表操作等。以下是代码的主要部分的解释:
-
连接池初始化:使用
redis.ConnectionPool
创建一个连接池,指定了Redis服务器的主机名、端口、最大连接数、密码和数据库索引。 -
获取Redis连接:
getConn
函数返回一个配置好的redis.Redis
实例。 -
设置键值对:
ExeceSet
:设置键的值,不设置过期时间。ExeceSetTimeout
:设置键的值,并指定过期时间(毫秒)。
-
获取键值:
ExeceGet
:获取键的值。ExeceGetAll
:通过模式匹配获取所有匹配的键,并返回它们的值列表。
-
列表操作:
ExeceLpush
:在列表头部插入值。ExeceRpush
:在列表尾部插入值。ExeceRpushTimeout
:在列表尾部插入值,并设置键的过期时间。ExeceRpushEx
:这是ExeceRpush
的别名。ExeceLrange
:获取列表中的元素,限制返回50个。ExeceLrangeAll
:获取列表中的所有元素。ExeceLpop
:从列表头部弹出值。
-
处理特殊值:
ExeceLValue
函数用于处理None和NaN值,将它们转换为空字符串。 -
清空Redis数据库:
ClearRedisDB
函数删除数据库中的所有键。 -
测试代码:在
if __name__ == '__main__':
块中,代码设置了两个键的值,并尝试获取和打印它们的值,以及执行一些键模式匹配和列表操作。
请注意,代码中有一些潜在的问题和不一致之处:
ExeceLValue
函数中的字符串替换逻辑可能不会按预期工作,因为它没有正确地处理单引号的转义。ExeceGetAll
函数使用conn.keys(name)
来获取所有匹配的键,然后逐个获取它们的值。但是,conn.keys
方法返回的是一个字节字符串列表,需要解码。ClearRedisDB
函数在测试代码块中被注释掉了,如果取消注释,它会删除所有键,这可能不是你想要的行为。- 代码中的注释使用的是GBK编码声明,但在Python 3中,通常不需要这样的声明,因为默认就是使用UTF-8编码。
在使用这段代码之前,你可能需要根据你的具体需求进行一些调整和错误处理。