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

2024-06-26 04:07:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 方法redis数据库应用程序列表db密钥red
1条回答
网友
1楼 · 发布于 2024-06-26 04:07:09

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)

相关问题 更多 >