Redis-如何在Redis中按哈希字段排序,而不是按键排序?
假设我想要一个redis hashRedis-如何在Redis中按哈希字段排序,而不是按键排序?,redis,Redis,假设我想要一个redis hasha={1:10,2:15,3:5,4:0,5:20},和一个setb=(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->
a={1:10,2:15,3:5,4:0,5:20}
,和一个setb=(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"
显然,哈希字段占位符中的星号不起作用。除了声明a:1-a:5之外,还有其他方法通过Redis完成此任务吗
另外,这不是重复的,因为这个问题清楚地讨论了
a::
方法。也许你可以用排序集来代替它建模?将值用作分数,将键用作成员。排序集或多或少类似于按值排序的散列。我很想给你举个例子,但我不确定你到底想解决什么问题。如果你能详细说明,也许我能帮上忙。这是一个已知的问题:
您可以执行以下操作:
redis 127.0.0.1:6379>sadd 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”这似乎是一个已知的问题: