gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 05:55:27 25 4
gpt4 key购买 nike

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

假设有更优雅的方法来解决这个问题,我是不是疯了?

附加信息

此数据库中的每个值都是一个字符串。

我的问题根本不是如何为每个唯一数据类型或相关数据类型检索值。

相反,我的问题是:有没有一种方法可以说 “嘿 Redis,将数据库中的每个字符串值返回给我” 而无需询问键,然后查询基于的值在归还的 key 上?

最佳答案

Redis 中不同类型之间存在差异,因此您必须查看数据类型来确定如何从键中获取值。所以:

keys = redis.keys('*')
for key in keys:
type = redis.type(key)
if type == "string":
val = redis.get(key)
if type == "hash":
vals = redis.hgetall(key)
if type == "zset":
vals = redis.zrange(key, 0, -1)
if type == "list":
vals = redis.lrange(key, 0, -1)
if type == "set":
vals = redis. smembers(key)

关于python - Redis:返回存储在数据库中的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com