我们使用Redis在DB 0中存储各种应用程序配置.
是否可以在数据库中查询Redis以获取每个键/值对,而无需执行两个单独的查询并自行加入键/值对?
我希望功能类似于以下内容:
kv = redis_conn.getall()
# --OR-- #
kv = redis_conn.mget('*')
Run Code Online (Sandbox Code Playgroud)
...哪里kv会返回元组元组,列表列表或字典:
但是在搜索StackOverflow,Google和Redis文档之后,我可以推导出的唯一解决方案(我还没有找到其他人问这个问题......)类似于以下内容:
import redis
red = redis.Redis(host='localhost', db=0)
keys = red.keys()
vals = red.mget(keys)
kv = zip(keys, vals)
Run Code Online (Sandbox Code Playgroud)
我在这里疯狂,假设有一个更优雅的方法解决这个问题?
此数据库中的每个值都是一个String.
我的问题不是如何检索每个唯一数据类型或相关数据类型的值.
相反,我的问题是:有没有办法说"hey Redis, return to me every string value in the database"不必要求密钥,然后根据返回的密钥查询值?
ide*_*awu 25
Redis中的不同类型之间存在差异,因此您必须查看数据类型以确定如何从密钥中获取值.所以:
keys = redis.keys('*')
for key in keys:
type = redis.type(key)
if type == KV:
val = redis.get(key)
if type == HASH:
vals = redis.hgetall(key)
if type == ZSET:
vals = redis.zrange(key, 0, -1)
Run Code Online (Sandbox Code Playgroud)