评论与喜欢设计与Redis

问题描述:


我醉了设计'评论&喜欢'! 我已经完成了mysql在*中的帮助,但是当我尝试为它设计redis时,我再次感觉不好-_- |||评论与喜欢设计与Redis

的情况是:
当客户端请求我与用户信息的评论数据服务应该告诉客户,如果用户已经喜欢上了评论,好的,我有3个表:用户,评论,像(包括user_id和comment_id) 我想从表'评论'中选择评论,并使用'左连接'从表'Like'中查询类似信息(使用user_id和comment_id)。这是解决方案为MySQL。 我发现如果mysql数据库中有很多评论和喜欢的话,查询速度会很慢,所以我不得不使用Redis来优化它。但是在尝试工作时我很困惑:
** 1。 **如果数据与用户没有关系,则很容易缓存数据,我的意思是每个用户都会得到相同的数据,如文章,帖子。
** 2 **很难缓存数据,如果该数据与用户的关系,我的意思是每个用户都将获得不同的数据,如“喜欢或不适合评论”

我的想法将每个Like信息缓存到redis,并在查询到注释后将其查询出来,并将其设置为comment.like.like.But问题是,如果我无法查询redis中的类似信息,可能是由于崩溃导致redis,我应该尝试从mysql再次加载吗?如果是这样,redis没有任何意义,mysql会在重查询中

Like/no like与yes/no,true/false一样,它们只是二进制信息。二进制信息可以很容易地记录为1/0。因此你应该考虑使用位图来记录这种类型的信息。

这是一个典型的Redis的位图的使用,所以不是我的复制和粘贴来自博客的这些信息,我会向你介绍这就是Redis的官方文件中被提到一个:http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/

这是一个非常详细技术博客并附带代码示例。我相信你会发现它很有用。

+0

我试图使用位图,但我发现位图会花费很多内存。例如,如果我的应用程序中有1000000个用户,并且只有一个用户(user_id = 1000000)喜欢该评论,它会成本1000000/8 KB内存来保存1位数据,我认为这是一个糟糕的方式 –

+0

我认为计算是1000000/8/1024 KB,这是约120K每个评论。我认为这是一个好处,而不是一个问题:1)大约120K是最多需要记录1M用户的喜欢; 2)当最后一个用户喜欢它时,它只会达到这个尺寸; 3)你总是可以像计数一样卸载“旧”到你的mysql数据库。 –

+0

谢谢你的建议〜 –