Redis:返回存储在数据库中的所有值

时间:2013-10-09 20:57:45

标签: python redis

我们正在使用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"而不必询问密钥,然后根据返回的密钥查询值?

1 个答案:

答案 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)