【问题标题】:Select certain hash elements using values of a set in Redis使用 Redis 中的集合值选择某些哈希元素
【发布时间】:2020-09-23 02:52:33
【问题描述】:

我是 Redis 新手,但希望尽快实现以下目标。

我为每个国家/地区设置了一组 ID,如下所示:

SADD country:uk 1 2
SADD country:de 5 6

我有一个带有时间戳的哈希值和来自国家/地区集合的 id,例如

HSET ts1:1 x 1 y 2
HSET ts1:2 x 3 y 4
HSET ts1:3 x 3 y 4

我想使用 country:uk 键仅检索 ts1:1 和 ts1:2 哈希的值。

我知道我可以将国家/地区的 id 返回到我的编程语言,然后构造调用以检索值,但希望有一种方法可以直接在 Redis 中执行此操作而无需所有网络负载。也许使用 lua 脚本。

更新: 更新示例以更接近我想要实现的目标

【问题讨论】:

    标签: redis


    【解决方案1】:

    是的,正如您所说,您可以将逻辑包装到 Lua 脚本中,这样可以减少网络负载。

    但是,如果您的 HASH 的字段是固定的,或者您的字段数量有限,您可以使用SORT 命令来实现您的目标。

    SORT country:uk BY NOSORT GET ts1:*->field1 GET ts1:*->field2
    

    【讨论】:

    • 感谢没有见过这样使用排序。输出的顺序是否得到保证,以便我可以在您的示例中将返回的值分成对,假设每对来自同一个键?所以输出将是 field1、field2、fleld1、fleld2 等。
    • @Anake YES,结果是有序的。此外,如果某个字段在某个哈希中不存在,它会为该字段返回 nil。
    猜你喜欢
    • 2012-11-13
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多