我们正在使用Redis在DB 0中存储各种应用程序配置。
是否可以为数据库中的每个键/值对查询Redis,而无需执行两个单独的查询并自行加入键/值对?
我希望功能类似于以下内容:
kv = redis_conn.getall()
# --OR-- #
kv = redis_conn.mget('*')
... kv
将返回元组元组,列表列表或字典:
然而,在搜索StackOverflow,Google和Redis文档之后,我可以推导出的唯一解决方案(我还没有找到其他人提出这个问题..)类似于以下内容:
import redis
red = redis.Redis(host='localhost', db=0)
keys = red.keys()
vals = red.mget(keys)
kv = zip(keys, vals)
我是否在这里疯狂,假设有一个更优雅的方法解决这个问题?
此数据库中的每个值都是一个字符串。
我的问题不是如何检索每种唯一数据类型或相关数据类型的值。
相反,我的问题是:有没有办法说"hey Redis, return to me every string value in the database"
而不必询问密钥,然后根据返回的密钥查询值?
答案 0 :(得分:24)
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)