Redis学习(十六)高级数据类型

Redis拥有三大高级数据类型

  1. bitmaps
  2. HyperLogLog
  3. GEO

Bitmaps

以位(bit)来保存数据,用于存储简单的状态数据

用法相当于一个Boolean类型的List集合 

注意:

如果我们设置一个值的下标非常大,而下标之前的所有数据将会用0来补充

操作

//    在指定位置上获取值
getbit key offset

//    在指定位置上设置值
setbit key offset value

//    对指定key按位进行操作,并将结果保存到destkey中
bitop op destkey key1 [key2...]

//    统计指定key中1的数量
bitcount key [start end]

op操作

  1. and: 交集
  2. or:并集
  3. not:非
  4. xor:异或

HyperLogLog

运用了LogLog算法

用来做基数统计(数据集去重后的元素的个数)

操作

//    添加数据
pfadd key element [element...]

//    统计数据
pfcount key [key...]

//    合并数据
pfmerge destkey sourcekey [sourcekey...]

HyperLogLog的误区

有些小伙伴会有疑问,就是说既然我都有了Set数据类型,还用HyperLogLog有啥用?

HyperLogLog只进行基数统计,并不存储数据,只记录数量不记录数据

HyperLogLog特点

  1. 消耗空间很小,只占用12K内存来记录基数,12K的内存并不是添加数据就一下占用12K,是随着数据的不断增大而增大
  2. 核心算法是基数估值算法,拥有0.81%的误差
  3. 执行pfmerge后占用内存12K,无论之前的数据有多大

GEO

用于地理位置计算的相关操作

//    添加坐标点
geoadd key longitude latitude member [longitude latitude member...]

//    获取坐标点
geopos key member [member ...]

//    计算坐标点距离
geodist key member1 member2 [unit]

//    根据坐标求范围内的数据
georadius key longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]

//    根据点求范围内数据
georadiusbymember key member radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]

//    获取指定点对应坐标hash值
geohash key member [member...]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值