sorting - 使用 SORT 命令从 Redis 中的排序集中获取 HASH 字段

标签 sorting redis hashmap sortedset

例如,在 redis-cli 中,我尝试创建一个这样的排序集:

zadd sortedset 1 1 2 2 3 3

我创建了一个这样的散列:

hset data 1 hello 
hset data 2 goodbye
hset data 3 sir

我的目标是将标识符存储在已排序的集合中,并获取存储在 data 散列中的字符串,该散列按已排序的集合排序。

这是我到目前为止尝试过的:

sort sortedset by nosort get data->*

...输出:

1) (nil)
2) (nil)
3) (nil)

实际上我期望 * 通配符应该是存储在所谓的排序集中的标识符之一,但它似乎没有对排序集中的每个具体标识符执行替换.

我是在尝试以正确的方式解决问题,还是有其他方法可以解决这个问题?

最佳答案

从本质上讲,您是对的,但是 SORT 命令的当前实现只接受散列取消引用左侧的通配符(请参阅 sort.hash 中的 lookupKeyByPattern)。 c).这就是 atm 的方式,而不是 SORT,为此使用 Lua 脚本。例如,这是一个肮脏的快速方法:

$ redis-cli eval "return redis.call('HMGET', KEYS[2], unpack(redis.call('ZRANGEBYSCORE', KEYS[1], '-inf', '+inf')))" 2 sortedset data
1) "hello"
2) "goodbye"
3) "sir"

关于sorting - 使用 SORT 命令从 Redis 中的排序集中获取 HASH 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30370000/

相关文章:

以比较函数作为参数调用快速排序函数

algorithm - 如何找出最大的元素个数(数组大小),让插入排序打败归并排序?

当我不希望 Java Hashmap 更新时

android - 如何在 HashMap (Android) 中存储一个值?

ruby - `sort_by` 如何处理多个字段?

java - 帮助排序方法

redis - 使用 Spring Data Repository 在 Redis 中使用 Long 自动增量?

session - Redis 中的 Tornado session

Redis replication和redis sharding(cluster)区别

java - 在 Java HashSet 中,它如何计算自定义对象的 hashCode?