当前位置: 首页 > 知识库问答 >
问题:

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

胡俊美
2023-03-14

我们使用Redis将各种应用程序配置存储在DB0中。

有没有可能在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,返回数据库中的每个字符串值给我”而不必询问键,然后根据返回的键查询值?

共有1个答案

莘光华
2023-03-14

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)
 类似资料:
  • 我想在我的spring boot应用程序中使用Redis repository,但每次我想重新使用findById或findByName等方法时,每次repository都返回null,但当我运行findAll或save等函数时,一切都正常工作。这是我的代码:我主要使用了以下注释:@EnableRedisRepository(“com.redis.repository.redis”)我创建了Red

  • 问题内容: 我运行了此命令以访问我的Redis服务器。 现在,我想显示所有数据库。 请告诉我这个命令。 谢谢。 问题答案: 没有命令可以执行此操作(例如您可以使用MySQL进行操作)。Redis数据库的数量是固定的,并在配置文件中设置。默认情况下,您有16个数据库。每个数据库都用数字(而不是名称)标识。 您可以使用以下命令来了解数据库的数量: 您可以使用以下命令列出定义了某些键的数据库: 请注意,

  • 我在使用spring-data-neo4j的项目中遇到了一些问题。我有一个节点实体类: 并使用以下方法为其创建存储库: 然后测试,就像这样: > 创建id为123456的广告节点,包含关键字1和关键字2-ok 创建id为654321且包含关键字1的广告节点-确定 获取广告ID 654321-工作正常,生成的查询是: 开始=节点:(={0})返回params{0=654321} 使用findSimi

  • 此示例存储库有一个方法 现在不需要使用Robolectric来单元测试了吗?

  • 我正在尝试编写一个可以返回结果的Java存储过程。我在Oracle网站上找到了这个文档,但是没有一个示例提供返回数据http://docs.oracle.com/cd/B19306_01/java.102/b14187/cheight.htm#CHDJJDGH 我创建了如下软件包: 包体如下 和 Java 代码 我使用SQLDeveloper通过以下指令调用我的过程 执行第二条指令时,我有以下错误