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 ...]  计算经纬度 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章