我沉醉在“评论点赞”的设计中!
我已经在stackoverflow的帮助下完成了mysql的工作,但是当我尝试为其设计redis时,我又感到难过-_-|||
情况是:
当客户从我的服务请求评论数据和用户信息时,服务应该告诉客户用户是否已经喜欢评论,好的,我有 3 个表:用户、评论、喜欢(包括 user_id 和 comment_id)
我想从表'Comment'中选择评论并使用'left join'从表'Like'(带有user_id和comment_id)中查询出喜欢的信息。这是mysql的解决方案。
我发现如果mysql数据库中有很多评论和点赞,查询会很慢,所以,我不得不使用Redis来优化它。但是我在尝试工作时很困惑:
**1.**如果数据与用户无关,很容易缓存数据,我的意思是每个用户都会得到相同的数据,比如文章,帖子。
**2.**如果数据与用户有关系,就很难缓存数据,我的意思是每个用户都会得到不同的数据,比如“喜欢或不喜欢评论”
我想把每个Like信息都缓存到redis中,查询完评论后查询出来,设置到comment.like中。但是问题是,如果不能在redis中查询like信息,可能是redis挂了,是不是要重新从mysql加载试试?如果是的话,redis不行,mysql查询会很重
最佳答案
喜欢/不喜欢和是/否、真/假是一样的,它们只是二元信息。二进制信息可以很容易地记录为 1/0。因此,您应该考虑使用位图来记录此类信息。
这是一个典型的 Redis 位图用法,所以我不会从博客中复制和粘贴这些信息,而是向您介绍 Redis 官方文档中提到的一个:http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/
这是一个非常详细的技术博客,并附带代码示例。我相信您会发现它很有用。
关于mysql - Redis 的 Comment&Like 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44961807/