在命令提示符处获取 Redis 键和值

Posted

技术标签:

【中文标题】在命令提示符处获取 Redis 键和值【英文标题】:Get Redis keys and values at command prompt 【发布时间】:2011-12-26 01:18:20 【问题描述】:

我在 Redis 中保存了一个非常小的数据,以下内容按预期工作,可以让我下载所有密钥。

redis-cli keys * 

有什么方法可以得到keys+values *

【问题讨论】:

【参考方案1】:

没有命令,但你可以写一个脚本来做到这一点。

您需要为每个键执行一个“类型”命令:

> type <key>

并根据响应执行:

对于“字符串”:get &lt;key&gt; 对于“哈希”:hgetall &lt;key&gt; 对于“列表”:lrange &lt;key&gt; 0 -1 对于“设置”:smembers &lt;key&gt; 对于“zset”:zrange &lt;key&gt; 0 -1 withscores

请记住,对于散列和排序集,您将获得键/分数和值。

一个可能的sh 实现:

#!/bin/sh -eu
keys=`redis-cli keys '*'`
if [ "$keys" ]; then
    echo "$keys" | while IFS= read -r key; do
        type=`echo | redis-cli type "$key"`
        case "$type" in
            string) value=`echo | redis-cli get "$key"`;;
            hash) value=`echo | redis-cli hgetall "$key"`;;
            set) value=`echo | redis-cli smembers "$key"`;;
            list) value=`echo | redis-cli lrange "$key" 0 -1`;;
            zset) value=`echo | redis-cli zrange "$key" 0 -1 withscores`;;
        esac
        echo "> $key ($type):"
        echo "$value" | sed -E 's/^/    /'
    done
fi

但请注意:

警告:将KEYS 视为只应极其小心地在生产环境中使用的命令。当它针对大型数据库执行时,它可能会破坏性能。此命令用于调试和特殊操作,例如更改键空间布局。

https://redis.io/commands/keys

【讨论】:

添加到它,值意味着并为不同的“类型”获取不同的东西 你能指导一下如何写吗?如果我从 redis 中获取数据,我可以使用 grep 和 sed 之类的命令。到目前为止,我只能导出键而不是上面提到的值。 取决于你想用它做什么。您想创建一系列命令来重现您拥有的数据吗?或者你想做什么?这些命令会给你数据,你只需要写出你想要的输出。 有什么方法可以调整你的脚本以支持密码验证,使用 AUTH 命令?我尝试将“AUTH my_password”添加到您的 redis-cli 命令中,但它不起作用。 我还在脚本中添加了stream) value=`echo | redis-cli -h localhost -p 6379 xinfo stream "$key"`;;【参考方案2】:

简答

for i in $(redis-cli KEYS '*'); do echo $i; redis-cli GET $i; done

长答案

获取所有密钥:

redis-cli KEYS '*' 

获取键的值:

redis-cli GET <your-key>

如果你想要所有的值:

for i in $(redis-cli KEYS '*'); do redis-cli GET $i; done

最后是所有键和值:

for i in $(redis-cli KEYS '*'); do echo $i; redis-cli GET $i; done

【讨论】:

我知道这个问题是关于“命令提示符”的,但是这个 Redis GUI 可能对到这里的人仍然有用:redislabs.com/redis-enterprise/redis-insight【参考方案3】:

对于redis &gt;= 5.x,引入了新的数据类型stream。所以,

> type <key>

应该给你stream。获取它的值:

> XRANGE <key> - +

【讨论】:

以上是关于在命令提示符处获取 Redis 键和值的主要内容,如果未能解决你的问题,请参考以下文章

如何获取网卡原生MAC地址和当前MAC地址

如何设置发布/调试模式以使用 Microsoft C++ 工具集在命令提示符处编译 cpp 文件

如何子类化字典以支持泛型类型提示?

听听Redis的变化?

如何在 .Net 应用程序中查看所有存储的会话的 REDIS 键和值?

Redis常用命令--Hashes