【问题标题】:Saving Redis query output to file将 Redis 查询输出保存到文件
【发布时间】:2015-11-02 15:40:38
【问题描述】:

使用 redis-cli 我连接到特定服务器:

redis-cli -h 10.1.xx.xx

还有select 1

然后只是获取一个关键功能的列表:

KEYS data_column*

这将在命令行上打印该列值的列表。但是,有很多值,我想将查询输出保存到文件中。

一般来说,在命令生效后使用> file_name。但在这种情况下,它不起作用,因为它在 redis 服务器上,虽然是从命令行。如何保存这样的查询结果?

【问题讨论】:

    标签: redis redis-cli


    【解决方案1】:

    简单使用:

    ./redis-cli -h 10.1.xx.xx -n 1 keys 'data_column*' >file.txt
    

    【讨论】:

    • 这样,“拒绝访问”就是响应。我这样做的方式(连接到 ip,然后选择 1,确定后,键入 KEYS 列*)实际上打印在屏幕上,但我无法保存。
    • 确保在您真正有权写入的位置创建文件。例如,使用 > /tmp/file.txt
    • 确定。实际上它返回空列表。如果我按照我在问题中解释的那样做,它会返回值列表。顺便说一句,地址是这样10.1.xx.xx:xxxx(选择1正在移动它出现在10.1.xx.xx:xxxx[1]
    • IMO,这是你的问题。你不应该使用“-h 10.1.xx.xx:xxxx”,而应该使用“-h 10.1.xx.xx -p xxxx -n 1”。在 redis-cli 命令行中,地址、端口和数据库都是由不同的选项管理的。
    • 即使使用单独的端口名称、主机名(弹性缓存名称),也得到空列表 - ./redis-cli -h assigned.name.cache.amazonaws.com -p 6379 -n 1 keys ' keyName_*'。
    【解决方案2】:
    echo "keys data_column*" | redis-cli -h 10.1.xx.xx -p xx > file.txt
    

    【讨论】:

      【解决方案3】:

      按照 hjiam2 上面所说的,但我无法评论他们的帖子。我误解了他们所说的“keys data_column*”是什么意思,最终实现了我想要的:

      echo 'GET key_name' | redis-cli -h localhost -p 6379 > key_value.txt
      

      我想要查看的密钥中有一个长值,因此需要将它放入一个文件中,然后我可以用它做任何我想做的事情。使用上面的命令实现了这一点。

      显然要确保 key_name 是您要查找的内容,并确保 host端口也是正确的。

      【讨论】:

        【解决方案4】:

        使用下面的命令行将所有密钥导出到文件。

        ./redis-cli -h XX -p YY KEYS "keyname*" >> filedata.txt

        XX -> 主机名

        YY -> 密码

        【讨论】:

          【解决方案5】:

          这对我有用(redis-cli 版本 5.0.7):

          redis-cli -a [password] -h [hostname] -p [port] [operation name] [key] >> /tmp/myfile.txt 
          

          例如:

          redis-cli -a password -h 127.0.0.1 -p 6379 GET myrediskey >> /tmp/myfile.txt 
          

          【讨论】:

            【解决方案6】:

            我正在寻找这个,但我没有找到合适的解决方案, 于是我就自己写了一段JS代码来做这个,希望能有用。

            const redis = require("redis");
            const client = redis.createClient(6379);
            const fs = require("fs")
            
            client.KEYS("*", (e, res) => {
              for (i=0; i < res.length; i++){
                client.get(res[i], (e, item) => {
                  fs.appendFile('output.txt', "Item: " + item + "\n", function (err) {
                    if (err) throw err;
                    console.log('Item Saved!');
                  });
                })
              }
            })
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-12-09
              • 1970-01-01
              • 1970-01-01
              • 2020-12-29
              • 2016-02-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多