2015-04-05 68 views
0

我目前在学习Redis,并且我想向用户展示他是否已经喜欢发布或不喜欢,如在Facebook上。redis - 商店用户喜欢

我想存储的用户ID,像这样的列表:

$redis.rpush('users_liked_post_#{post_id}', user_id) 

$redis.lrange('users_liked_post_#{post_id}', 0, -1) 

# [34, 23, 433, 432, 324] 

,然后检查用户ID是在该列表中,告诉他已经喜欢上了职。但这是一个O(n)速度,有没有更好的方法?

回答

2

使用,而不是设置 - 它保证没有重复(即用户可以不喜欢后两次),你可以快速检查是否存在,即(假设Redis的-RB):

redis.sadd 'post:{#post_id}:likes', '{#user_id}' 

注意,在为了做反向查询,得到用户喜欢的页面列表,需要为每个用户保留另一个喜欢的页面,例如:

redis.sadd 'user:{#user_id}:likes' '{#post_id}' 
+0

谢谢!那很完美 – user2037696 2015-04-05 07:03:01