本期给大家讲述描述一些目前正在进行的分布式项目的一些小技术点,由于我们现在正在做新闻系统,其中一个功能模块就是新闻的浏览量怎么计算。
那么这期就为大家解释一下我处理浏览器浏览量计算方式方法,
首先大家思考一下,新闻系统的浏览量肯定是一个高并发的项目,用户每点击一次,获取用户的ip,如果该用户是第一次访问该博客,就在数据库的该条
新闻的浏览量上加一,首先,是肯定要在浏览量上加上一,这是肯定的,然后大家想想,如果这条新闻特别火,同时几百万人同时访问,那么数据库会不会
立马瘫痪,那么这时很显然,就不应该去数据库添加了。肯定要去用到我们redis,那么redis怎么去存,存储什么样的数据格式,这又是一个需要好好考虑
的问题。
那么衡量浏览器浏览量的标准是pv(page和view)和uv(user和view):
什么是pv呢,也就是说刷新一次就加上一次浏览量,一般我们用pv反映的是服务器的压力,
那么uv,也就是一个用户点击一次才加上一次,这种场景适合我们做浏览量的统计
了解上边的需求之后,带大家了解一下一种HyperLogLog算法,HyperLogLog算法是用于基数统计的算法,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。HyperLogLog适用于大数据量的统计,因为成本相对来说是更低的,最多也就占用12kb内存
简单了解之后大家是不是就明白了,结合我们上边的需求,就很清楚了,那么我们该怎么操作HyperLogLog呢,在Redis 在 2.8.9 版本才添加了 HyperLogLog,
所以大家要注意自己的redis版本,也就是说我们在redis中就可以操作,具体命令大家翻阅博客都有,在这就不一一列举了。
那么上边描述过后,大家就动手操作吧,利用redis把基数存入HyperLogLog,加油加油!