【问题标题】:pass results to another command in redis将结果传递给 redis 中的另一个命令
【发布时间】:2012-09-01 01:26:49
【问题描述】:

有没有办法在 Redis 中将一个函数的返回值传递给另一个函数?当然,如果您使用的是语言包装器(如 Ruby),这很容易——但是从 CLI 中呢?

例如像这样,bash 风格

redis 127.0.0.1:6379> keys student* | mget

或类似的东西

redis 127.0.0.1:6379> mget(keys student*)

keys student* 将返回一个键列表,但我不知道如何获取这些键的所有值。

想法?

【问题讨论】:

    标签: ruby redis command-line-interface read-eval-print-loop


    【解决方案1】:

    在 CLI 中,您只需让 shell 完成它的工作。

    ./redis-cli --raw keys 'student:*' | awk '{printf "get %s\n", $1}' | ./redis-cli --raw
    

    请注意,由于其线性复杂性,您不应该在应用程序中使用 keys 命令。

    【讨论】:

    • 更简单(--raw 是管道到另一个命令时的默认值):redis-cli keys 'student:*' | xargs redis-cli mget。对于一元命令(例如type),使用redis-cli keys 'student:*' | xargs -n1 redis-cli type。当然,不鼓励使用 keys 命令,如果你有这个命令的用处,例如sort 命令减少了包含所有键的集合,这应该会产生更好的性能。
    • xargs 很好,但是 xargs -n1 会为每个输入行分叉一个进程,而 redis-cli 中的管道不会。
    • 我想删除 75k 键,这种技术比使用 python 客户端和管道快 100 倍
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2012-06-28
    • 2015-12-23
    • 2014-03-05
    • 1970-01-01
    • 2016-07-06
    相关资源
    最近更新 更多