我正在尝试用 Redis 编写查询以获取我的哈希键的前 2 个字段值。
基本上,当我做HVALS hashname
时,我想获取添加的前 2 个字段的值(最旧的 2 个(。这有点像在 SQL 数据库中获取 TOP 2 元组。
这在雷迪斯中可能吗?
不,这是不可能的。Redis 哈希中字段和值的顺序在所有意图和目的上都是随机的(尽管从小型哈希实验中获得的经验证据(。有关元素排序,请参阅 Redis 的排序集。
更新:要回答评论中的问题,IIUC 看起来您只需使用字符串即可轻松解决它。由于 Redis 的性质,在任何给定时刻,要么有一个用户等待特定的匹配,要么为零。您可以SET matchmaking:blue username1:token
密钥是否存在(即等待匹配的零用户(,如果存在,则GET
并DEL
它。请务必使用 SET
的"NX"子命令、MULTI/EXEC
和/或 Lua 来确保这两个逻辑操作的原子性。
根据我的实验,HVALS
按照您要查找的顺序返回键的值,即最旧的键优先。现在由您决定仅使用客户端程序选择前两个值,例如 HSET myhmap name "abhi"
、HSET myhmap email "test@test"
、HSET myhmap planet "earth"
、HSET myhmap galaxy "andromeda"
。 HVALS myhmap
将返回"abhi","test@test"
、"earth"
、"andromeda"