【问题标题】:Redis - how to sort by hash field in redis as opposed to key?Redis - 如何按 redis 中的哈希字段而不是键排序?
【发布时间】:2012-09-21 07:41:56
【问题描述】:

假设我想要 redis 哈希 a = {1:10, 2:15, 3:5, 4:0, 5:20} 和一组 b = (5,3,4)。我想得到一个包含来自b 的元素的列表,按a[b] 的值排序(本例中的结果是[4,3,5])。

当我尝试这样做时,效果不佳。

redis 127.0.0.1:6379> hmset a 1 10 2 15 3 5 4 0 5 20
redis 127.0.0.1:6379> sadd b 5 3 4
redis 127.0.0.1:6379> sort b by a->*
1) "3"
2) "4"
3) "5"

显然,哈希字段占位符中的星号不起作用。除了通过 Redis 声明 a:1-a:5 来完成这个任务,还有其他方法吗?

附:这不是Redis : How can I sort my hash by keys? 的重复,因为该问题清楚地讨论了a:* 方法。

【问题讨论】:

  • 这似乎是一个已知问题:github

标签: redis


【解决方案1】:

这是一个已知问题:link

您可以执行以下操作:

redis 127.0.0.1:6379> 悲伤 b 5 3 4

redis 127.0.0.1:6379> zadd a 10 1 15 2 5 3 0 4 20 5

redis 127.0.0.1:6379> zinterstore 结果 2 a b

redis 127.0.0.1:6379> zrange 结果 0 -1

1) “4”

2) “3”

3) “5”

【讨论】:

    【解决方案2】:

    也许您可以改为使用排序集对其进行建模?将值用作分数,将键用作成员。排序集或多或少类似于按值排序的哈希。我很想给你举个例子,但我不确定你要解决的问题到底是什么。如果您能详细说明,也许我可以提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      • 2015-05-29
      相关资源
      最近更新 更多