一、高级数据类型
Bitmaps
HyperLogLog
GEO
二、Bitmaps
1、数据结构
一个byte数组,某一个位置为1表示一个元素
2、命令
命令 | 作用 |
setbit key index 1 | 设置bitmaps某个下标对应的元素为1 |
getbit key index | 查询bitmaps某个下标对应的元素 |
bitcount key | 查询bitmaps值为1的个数 |
三、布隆过滤器
1、作用
判断一个元素是否在集合中;
概率判断;
2、算法
由一个二进制数组和一个hash算法组成;
每个元素取hash值后确认在数组的位置;
3、缺陷
出现hash碰撞的时候会误判,判断为存在不可信,判断为不存在才可信;
4、结构:
5、优化:
增大数组;
增加几层hash算法;
四、HyperLogLog
1、作用
提供不精确的去重计数,标准误差是0.81%
2、原理解析
hyperloglog基于概率论中伯努利试验并结合了极大似然估算方法,并做了分桶优化;
涉及算法:伯努利试验、极大似然估算、分桶优化
3、适用场景
统计网站中某个页面的独立访问量
4、命令
命令 | 作用 |
pfadd key u1 u2 u3... | 向hyperloglog中添加元素 |
pfcount key | 查询hyperloglog中的元素个数 |
pfmerge newkey key1 key2 | 将key1和key2的元素合并到newkey中 |
5、注意
不属于一个数据类型,就是一个字符串
五、GEO
1、作用 & 数据结构
支持地理位置距离排序算法
支持存储地理位置信息用来实现附近位置的功能
使用的是zset的结构
2、命令
命令 | 作用 |
geoadd key 经度 维度 member | 添加一个城市 |
geopos key member1 member2 ... | 查询多个城市的经纬度 |