例如,在 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 中的
).这就是 atm 的方式,而不是 lookupKeyByPattern
)。 cSORT
,为此使用 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/