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

如何在redis中获取其值的所有键

鲜于峰
2023-03-14

我知道,为了获得Redis中所有键的列表,我必须使用键*,但是有没有一种方法可以将所有键及其值一起输出?

几分钟的搜索没有产生任何结果。

另外,非常感谢您的回答,但我正在寻找一个本地解决方案。我可以自己编写一个函数,遍历键*的所有输出。

共有3个答案

艾心远
2023-03-14

我对bash解决方案进行了一些改进,以便使用更有效的扫描来代替键,并支持打印数组和哈希值。我的解决方案还打印出密钥名称。

redis_print.sh:

#!/bin/bash

# Default to '*' key pattern, meaning all redis keys in the namespace
REDIS_KEY_PATTERN="${REDIS_KEY_PATTERN:-*}"
for key in $(redis-cli --scan --pattern "$REDIS_KEY_PATTERN")
do
    type=$(redis-cli type $key)
    if [ $type = "list" ]
    then
        printf "$key => \n$(redis-cli lrange $key 0 -1 | sed 's/^/  /')\n"
    elif [ $type = "hash" ]
    then
        printf "$key => \n$(redis-cli hgetall $key | sed 's/^/  /')\n"
    else
        printf "$key => $(redis-cli get $key)\n"
    fi
done

注意:您可以通过删除redis_print的第一行来制定此脚本的一行代码。sh和命令:cat redis\u打印。sh | tr'\n';'|awk'$1=$1'

宰父才
2023-03-14

是的,您可以使用下面的bash脚本打印所有密钥,

for key in $(redis-cli -p 6379 keys \*);
  do echo "Key : '$key'" 
     redis-cli -p 6379 GET $key;
done

其中,6379是redis运行的端口。

朱英范
2023-03-14

Redis命令文档不包含用于获取多个键的键和值的本机命令。

最自然的方法是使用scriptload命令或EVAL命令将lua脚本加载到redis中。

一种解决方法是使用一些bash魔法,像这样:

echo 'keys YOURKEY*' | redis-cli | sed 's/^/get /' | redis-cli 

这将输出以您的密钥开头的所有密钥的数据

请注意,keys命令是一种阻塞操作,应小心使用。

 类似资料:
  • 问题内容: 我将数据存储在Redis中。我将它存储在GUID,createday和它的大小中。 因此,我定义以下内容: 我希望查看我的数据库中的所有文件。因此,我尝试以下操作: 但是res是。我该怎么做? 问题答案: 返回存储在key处的哈希的所有字段和值,您不能指定掩码: http //redis.io/commands/hgetall 您可以调用获取符合条件的所有键的列表,然后循环获取所有值。

  • 问题内容: 这是我的配置: 回波用于测试。我隐藏了IP。 我正在尝试通过NGiNX从Redis获取会话数据。这就是为什么我安装HttpRedis的原因。 我不了解的是如何从Redis获取数据,然后将其放入变量中。所以我可以随便使用它。 问题答案: 使用NGiNX-Eval-Module:https : //github.com/vkholodkov/nginx-eval- module 这是您的操

  • 问题内容: 我遇到了这个问题,我不知道需要迭代其实际值的实际类型。 任何想法如何从enumValue中提取其可能的值? 问题答案:

  • 问题内容: 我正在使用带有Node.js的Redis数据库。使用 我存储JSON字符串化作业。 现在,我要遍历所有作业,并同时检索作业ID和字符串化的作业。 我试过了, 但是只检索了键。 我试过了, 但我不知道如何从obj检索键和值。 任何帮助都将不胜感激,因为我被困住了。 问题答案: 这就是它的工作方式。以下代码中的id是记录ID。

  • 问题内容: 我知道KEYS命令,但这仅返回键(我猜所有的字符串类型都是String),并且显然不认为集合是键。 是否有用于获取数据库中所有集合的命令?其他数据类型(哈希,列表,排序集)又如何呢? http://redis.io/topics/data-types 问题答案: 我知道KEYS命令,但这仅返回键(我猜所有的字符串类型都是String),并且显然不认为集合是键。 不管您的密钥是哪种数据类

  • 假设我有以下代码: 是否有一种方法可以得到下面的数组?