使用Hash
哈希是Redis的一种基础数据结构,Redis底层维护的是一个开散列,会把不同的key映射到哈希表上,如果是遇到关键字冲突,那么就会拉出一个链表出来。
注 意
文末有:3625页互联网大厂面试题
当我们要统计某一个网站某一天的访问量的时候,就可以直接使用HLEN来得到最终的结果了。
缺点:占用内存过大,。随着key的增多,性能也会下降。小网站还行,拼多多这种数亿PV的网站肯定受不了
使用Bitset
优点占用内存更小,查询方便,可以指定查询某个用户,数据可能略有瑕疵,对于非登陆的用户,可能不同的key映射到同一个id,否则需要维护一个非登陆用户的映射,有额外的开销。
使用概率算法
当用户访问网站的时候,我们可以使用PFADD命令,设置对应的命令,最后我们只要通过PFCOUNT就能顺利计算出最终的结果,因为这个只是一个概率算法,所以可能存在0.81%的误差。
优点占用内存极小,对于一个key,只需要12kb。对于拼多多这种超多用户的特别适用。
缺点查询指定用户的时候,可能会出错,毕竟存的不是具体的数据。总数也存在一定的误差。
最后
好了,上面就是常见的3种适用Redis统计网站用户访问数的方法了。今天的介绍我们就讲到这里,如果你有兴趣,欢迎关注微信公众号,【程序员十一 】除了分享算法相关的,最近主要会讲一些redis的原理与应用。近期还准备了一些AI相关的知识,整理后会和大家继续分享。