3

假设我想要 redis hasha = {1:10, 2:15, 3:5, 4:0, 5:20}和 set 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 来完成这项任务之外,还有其他方法吗?

PS 这不是Redis 的副本:如何按键对哈希进行排序?,因为该问题清楚地讨论了该a:*方法。

4

2 回答 2

2

这是一个已知问题:链接

您可以执行以下操作:

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 ab

redis 127.0.0.1:6379> zrange 结果 0 -1

1)“4”

2) “3”

3) “5”

于 2012-09-20T23:41:56.920 回答
0

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

于 2012-09-20T14:55:34.263 回答