Redis 的 Comment&Like 设计
The Comment&Like design with Redis
我醉在'Comment & Like'的设计中了!
我已经在Whosebug的帮助下完成了mysql的工作,但是当我尝试为它设计redis时,我又感到难过-_-|||
情况是:
当客户端从我的服务中请求用户信息的评论数据时,服务应该告诉客户端用户是否已经喜欢评论,好的,我有 3 tables:User,评论,喜欢(包括 user_id,和 comment_id)
我想 select 来自 table 'Comment' 的评论,并使用 'left join' 从 table 'Like' 查询类似信息(使用 user_id 和 comment_id)。这是 mysql 的解决方案。
我发现如果 mysql 数据库中有很多 Comments 和 Likes,查询会很慢,所以,我不得不使用 Redis 来优化 it.But 我在尝试工作时很困惑:
**1.**如果数据与用户无关,很容易缓存数据,我的意思是每个用户都会得到相同的数据,就像文章一样,post.
**2.**如果数据与用户有关系,就很难缓存数据,我的意思是每个用户都会得到不同的数据,比如'like or not for a comment'
我在考虑把每个点赞信息缓存到redis中,在评论被查询后查询出来,设置到comment.like.But 问题是,如果我不能在redis中查询点赞信息, 有可能是redis挂了,是不是要重新从mysql加载?如果是的话,redis就不行了,mysql会在heavy queries
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/
这是一个非常详细的技术博客,并附有代码示例。我相信你会发现它很有用。
我醉在'Comment & Like'的设计中了!
我已经在Whosebug的帮助下完成了mysql的工作,但是当我尝试为它设计redis时,我又感到难过-_-|||
情况是:
当客户端从我的服务中请求用户信息的评论数据时,服务应该告诉客户端用户是否已经喜欢评论,好的,我有 3 tables:User,评论,喜欢(包括 user_id,和 comment_id)
我想 select 来自 table 'Comment' 的评论,并使用 'left join' 从 table 'Like' 查询类似信息(使用 user_id 和 comment_id)。这是 mysql 的解决方案。
我发现如果 mysql 数据库中有很多 Comments 和 Likes,查询会很慢,所以,我不得不使用 Redis 来优化 it.But 我在尝试工作时很困惑:
**1.**如果数据与用户无关,很容易缓存数据,我的意思是每个用户都会得到相同的数据,就像文章一样,post.
**2.**如果数据与用户有关系,就很难缓存数据,我的意思是每个用户都会得到不同的数据,比如'like or not for a comment'
我在考虑把每个点赞信息缓存到redis中,在评论被查询后查询出来,设置到comment.like.But 问题是,如果我不能在redis中查询点赞信息, 有可能是redis挂了,是不是要重新从mysql加载?如果是的话,redis就不行了,mysql会在heavy queries
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/
这是一个非常详细的技术博客,并附有代码示例。我相信你会发现它很有用。