mysql - Redis 的 Comment&Like 设计

标签 mysql redis facebook-like


我沉醉在“评论点赞”的设计中! 我已经在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/

相关文章:

mysql - 如何通过连接字符串告诉mysql时区?

node.js - 如何以阻塞方式访问redis而不是nodejs中的非阻塞(事件回调)

javascript - 有没有办法将 <script> 内容嵌入到 Doxygen\mainpage 部分?

php - 喜欢另一个页面/URL 的 Facebook "like"按钮

MySQL 版本 : 5. 5.36 易受攻击?

mysql - 无符号浮点到有符号浮点 - Laravel Mysql

redis - 需要可以通过 http 访问的持久键值存储

javascript - 当不允许第三方 cookie 时,有什么想法可以优雅地捕捉失败的 facebook 之类的按钮吗?

python - MySQL 和 Python-插入

python - Redis 定期在 Twisted 上断开连接并重新连接