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

Jos*_*rns 12 python redis

我们使用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)

  • `KV`,`HASH`和`ZSET`来自哪里?如果我做"dir(redis)",我就不会看到它们. (9认同)