3如何共享一个独特的计数redis

3如何共享一个独特的计数redis
独特的算是网站的一个很常见的功能,如访问网站的独立访问者人数(即UV)。常见的计数问题,但解决方案可能会很复杂:一是计算量可能会很大,如大型网站每天都有数以百万计的人访问,数据量大;二是通常也要扩展维数,比如每天除了紫外,还想知道每周或每月的紫外线,所以结果是很复杂的。

在关系数据库存储系统中,唯一计数的唯一方法是选择计数(不同)。这是非常简单的,但是如果数据量很大,这句话的执行速度很慢。关系数据库的另一个问题是插入数据的性能不高。

redis是能够解决这样的计数问题,于关系数据库,更快的资源少,甚至3种不同的方法。

1。基于集

Redis集合是用来存储独特的数据集。它可以快速判断一个元素是否存在于集合中,或者快速计算一个集合的元素个数,并将其合并到一个新集合中:

复制代码代码如下所示:

sismember关键成员#判断是否存在

萨德的核心成员#加盟成员

个关键#获取集合中的元素数
基于集合的方法简单、有效、准确、适用范围广、易于理解。它的缺点是资源消耗比较大(当然,比关系数据库少得多)。如果元素的数量很大,比如上百万的计数,那么消耗内存就太可怕了。

2。基于位

Redis的点可以用来实现高压缩比的计数设置内存,存储有关元素的信息通过一个1位或0。例如,该网站的独立访客数可以user_id作为抵消点偏移,设置为1,这意味着访问。1 MB的空间可以存储大约8000000个用户的每日访问计数:

复制代码代码如下所示:

setbit关键偏移值#集信息

中的getbit偏移#获取信息的关键

{开始} #比特计数键结束计数

bitop操作destkey关键{key} #位图合并…
基于空间消耗的位方法要比集合小得多,但它可以映射到简单的元素迁移,应用范围很窄,而且占用空间取决于最大偏移量,而计数不相关,如果最大偏移量很大,也有相当大的内存消耗。

三.基于HyperLogLog

为了达到精确计数只有大量的数据是困难的,但如果只是近似的话,有许多科学计算的有效算法,这是一个著名的HyperLogLog计数算法,它可以只使用大约12 K的内存,只指望亿元,与约百分之一的误差。所涉及的命令如下:

复制代码代码如下所示:

pFADD要素{元…} #添加元素

pfcount关键{key} #计数…
这种计数方法实在是太棒了,我还没有完全了解它,我对相关的文章很感兴趣。

三独特的计数方法所提供的使用都有自己的优点和缺点,可以充分满足不同情况下的计算要求。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部