Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis-如何在Redis中按哈希字段排序,而不是按键排序?_Redis - Fatal编程技术网

Redis-如何在Redis中按哈希字段排序,而不是按键排序?

Redis-如何在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->

假设我想要一个redis hash
a={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"
显然,哈希字段占位符中的星号不起作用。除了声明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”

这似乎是一个已知的问题: