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

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

redis-cli keys * 

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

【问题讨论】:

    标签: redis


    【解决方案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
    

    【讨论】:

    【解决方案3】:

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

    > type <key>
    

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

    > XRANGE <key> - +
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 2020-02-29
      • 2015-02-22
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多