我的redis datamodel的密钥或列表?

时间:2012-01-26 15:33:21

标签: redis

我正在构建我的应用程序的数据模型,基本上,对于给定的用户,我想保留他/她的朋友列表以及他们每个人的状态(如果他们接受了成为朋友的请求或者如果他们还没有)

我最终得到了几个键:(汤姆的每个朋友都有一个)

friends:tom:status:jessica => joined
friends:tom:status:stephan => joined
friends:tom:status:hubert => pending
friends:tom:status:peter => declined

这是处理该问题的最佳方法,还是应该以其他方式使用列表?

2 个答案:

答案 0 :(得分:2)

您可以尝试使用例如hash结构,其中哈希键为friends:tom:status,字段表示朋友姓名/ ID,值表示其状态。 Hash结构通常比专用键更多memory efficient

答案 1 :(得分:2)

您可以使用有序集。

让每个状态都有与之相关的分数,加入1,等待2,拒绝3

zadd user1_friends 1 userid 1 userid 2 userid

然后您可以轻松地按类别检索所有用户

zscore user1_friends 1

或者您可以分成3个单独的集合

sadd user1_joined userid1
sadd user1_pending userid3

根据您的要求,任何一种都可以使用