redis高级数据类型

reids高级数据类型是基于五种基本数据类型的,是为了针对某些特定的业务而衍生出来的数据类型。

一、Bitmaps

bitmaps事实上并不是一种新的数据类型,而是基于字符串位操作的集合,由于字符串是二进制安全的,并且最长可支持512M,所以它们可以用来存储2的32次方(512 * 1024 * 1024 * 8 )不同位的数据。

bitmaps的位操作分成两组:1.固定时间的单个位操作,比如把字符串的某个位设置为1或者0,或者获取某个位上的值 2.对于一组位的操作,对给定的比特范围内,统计设定值为1的数目。

bitmaps最大的优势在存储数据时可以极大的节省空间,比如在一个项目中采用自增长的id来标识用户,就可以仅用512M的内存来记录4亿用户的信息(比如用户是否希望收到新的通知,用1和0标识)

如:11100001  偏移量为0-7,顺序为从右到左

getbit key offset  获取指定key对应偏移量上的bit值 

setbit key offset value  设置指定key对应偏移量上的bit值,value只能是1或0 

bitop op destKey key1 [key2...]  对指定key按位进行交、并、非、异或操作,并将结果保存到destKey中 

op:and 交 or 并 not 非 xor 异或

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

适用场景:信息状态统计

二、HyperLoglog

HyperLogLog 是用来做基数(去重后元素个数)统计的,运用了LogLog的算法 。

HyperLogLog 用于进行基数统计,不是集合,不保存数据,只记录数量而不是具体数据 。

核心是基数估算算法,最终数值存在一定误差 。误差范围:基数估计的结果是一个带有 0.81% 标准错误的近似值

耗空间极小,每个hyperloglog key占用了12K的内存用于标记基数

pfadd命令不是一次性分配12K内存使用,会随着基数的增加内存逐渐增大

Pfmerge命令合并后占用的存储空间为12K,无论合并之前数据量多少 

pfadd key element  添加数据

pfcount key  统计数据 

pfmerge destkey sourcekey  合并数据 

适用场景:独立IP统计

三、GEO

GEO为地理位置的支持。

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]   获取坐标点 

geohash key member [member ...]  计算经纬度 

适用场景:地理位置信息处理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值