点赞功能,用mysql还是redis?( 二 )


上面使用string存储的用户点赞数量,除了string,还可以用hash来存储,对文章id分块,每100个存到一个hash,分别存入hash table,每个文章id为hash的一个key,value存储点赞的用户id,如果点赞用户很多,避免id过多产生性能问题,可以单列出来,用sorted set结构保存,热点的毕竟是少数 。
 

点赞功能,用mysql还是redis?

文章插图
hash
 
方案优缺点比对
hash:使用了更少的全局key,节省了内存空间;但是也带来了问题
如何根据文章id路由到对应的hash?
查找一个用户id是在hash还是set?存在不确定性
使用hash虽然节省了空间,但增加了复杂度,如何选择就看个人需求了 。
除此之外,你还有其他的方法吗?
3. 数据一致性
redis作为storage使用时,一定要做好数据的持久化,必须开启 rdb 和 aof,这会导致业务只能使用一半的机器内存,所以要做好容量的监控,及时扩容 。
另外只要有数据copy,就会有一致性问题,这就是另外一个很重要的话题了 。以后有时间再细聊吧!
 
写在最后:把问题写明白,真不是一件容易的事情,请大家多多关注,留言,谢谢!
前几天写的一篇文章,受到众多同行的热情回复,能和众多同行一起交流,深感荣幸!对于工程类问题,没有标准的方案,一千个人有一千个方案,哪个最适合你只有你自己知道!期待你更好的思路和方法 。




推荐阅读