Redis:特殊数据类型,hyperloglog(基数),bitmap(位存储)

一,Hyperloglog(基数)

1.什么是Hyperloglog(基数)

一个集合中的不重复的元素,

egA{1,3,5,7,8,7}    B{1,3,5,7,8}

基数(不重复的元素)= 5,可以接受误差

2.应用场景

统计页面访问量:一般一个人或多次访问一个网页,当统计时不能将一个人的多次访问统计成多个访问量,所以Hyperloglog很好的满足了这个要求

传统的利用实体去setid方式,但着用会持久化大量无用的数据,用redis会很好的解决这个问题,

优点:内存时固定的 12k

 

 注意:如果允许数据容错的话用Hyperloglog,是不错的选择

   如果不允许容错,那么只能用set或者自定义的数据类型

 

二,Bitmap位存储

拓展:bitmaps可以实现布隆过滤器

使用场景:当一个对应只有两个或几个属性时,推荐使用

例子:统计用户信息,活跃,不活跃,登录,未登录,打卡

Bitmaps位图,数据结构,都是操作二进制位来进行记录的,只有0 1两个状态

比如利用bitmaps实现一个人365天的打卡情况

365= 365bit   1字节=8bit  46个字节左右

 

 

bitmapps实现,~指令【setbit {key} {offset} {vlaue} 

 

缺点:1.只有两个状态,在实际应用场景中,仅适用于状态或属性少的业务, 
   2.约束大,不方便后期扩展

 

 

 

 

原文地址:https://www.cnblogs.com/CL-King/p/14578746.html