我想存储一些如下信息(请注意,我根本不拘泥于这个数据结构,但这会向您显示我想要存储的基础信息):
{ user_id: 12345, page_id: 2, country: 'DE' }
在这些记录中,user_id是唯一字段,但page_id不是。
我想将其转换为Redis数据结构,我希望能够按如下方式运行高效搜索:
实际上可以在Redis中执行此操作吗?如果是这样,我应该使用哪些数据结构,以及在插入记录时如何避免重复记录的可能性?
答案 0 :(得分:4)
听起来您需要两种密钥类型:用于存储用户数据的HASH密钥,以及包含相关用户列表的每个页面的LIST。下面是一个如何工作的例子。
加载数据:
> RPUSH page:2:users 12345
> HMSET user:12345 country DE key2 value2
拉数据:
# All users for page 2
> LRANGE page:2:users 0 -1
# All users for page 2 and their countries
> SORT page:2:users By nosort GET # GET user:*->country GET user:*->key2
从页面删除用户:
> LREM page:2:users 0 12345
在SORT中重复GET以检索用户的其他值。
我希望这会有所帮助,请告诉我您是否有任何需要澄清的内容,或者您是否需要进一步的帮助。我还建议阅读redis web site中可用的命令列表和文档,特别是有关SORT操作的信息。
答案 1 :(得分:1)
由于user_id是唯一的,国家/地区也是唯一的,因此请将它们保存在一个简单的键值对中。在这种情况下,对用户进行查询是O(1)...然后,保留一些Redis sets,键入page_id,成员使用所有user_ids ..