【设计】计数(二)普通计数

这里说的是非基数类型的计数。

对于这类型计数,可以只使用一个变量存储计数值,比如点赞数,直接用一个like_count变量逐步累加就行。

但是考虑一个复杂场景,比如记录每一个作品的点赞数,这个时候就需要加一个作品维度了,如果使用mysql记录,那么scheme可能是:photo_id,like_count。

再复杂一些,作品里可能有多个计数的维度,比如除了点赞计数,还有评论计数,分享计数等等,那看上去需要每一种计数类型都建一张表了,其实也不用,可以再一列type,表明计数类型:photo_id,type,like_count,(photo_id, type)是一个唯一键。

 

另外,如果一个计数是热点类型,涉及到并发更新,可以使用如下两种策略削峰:

1.聚合:即先本地维护一个计数变量,当达到一定量后再统一更新到db;

2.将计数通过一定的hash方法分配到若干存储里,比如一个count分成10分存,每一份都对应一个redis节点,当然读的时候需要聚合;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值