【发布时间】:2012-07-14 18:47:42
【问题描述】:
假设您有一个哈希“用户”,其条目将数字 ID 映射到 JSON 编码的数组,因此,例如,整数 1 映射到字符串 {name: 'John', surname: 'Doe',occupation:'管道工'}。
散列中项目的数字 ID 存储在各种列表中。因此,如果“foobar”是这些列表之一,要从中检索实际数据,我将运行一个简单的 Lua 脚本(实现服务器端连接操作)。或者,正如我刚刚了解到的,我可以使用类似的东西
SORT foobar BY inexistent_key GET user:*
但这意味着将每个用户的数据存储到一个单独的键中,这似乎很昂贵(在我的情况下,我有很多小集合,所以我想利用 Redis 的哈希压缩)。
问题最终是这样的:我需要按字母顺序排列这些列表,例如,每个用户的姓氏,然后按名称。在不改变太多底层数据模型(如果可能的话)的情况下,实现这一目标的最佳方法是什么?
到目前为止,我能想到的最好的方法是使用 SORT 命令以及 BY 和 STORE 子句,即运行
SORT foobar BY surname:* STORE foobar
每当列表更改时,但那样我需要很多键。如果我可以在 BY 子句中使用散列,那将是理想的解决方案,在我看来。
如果我想要排序的字段受到某种限制(例如,只有几百个姓氏),我可以考虑将字符串映射到整数并使用 Redis 排序集,但情况似乎并非如此。
【问题讨论】:
标签: language-agnostic redis sorted