提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
一、bitmaps类型
1.setbit命令
2.getbit命令
3.bitcount命令
4.bitop命令
二、Hyperloglog数据类型
1.pfadd命令
2.pfcount命令
3pfmerge命令
Geospatial数据类型
1.geoadd命令
2.geopos命令
3.geodist命令
总结
前言
本文介绍了几种redis中的数据类型
一、bitmaps类型
这个类型主要进行位操作,可以将bitmaps视为一个只存放0和1的字符串类型数组
Bitmaps中有两个很重要的参数,即偏移量offset,以及字节的概念。在计算机中一个字节bit有8位组成。
常用命令:
1.setbit命令
1.创建一个bitmaps
setbit [key] [offset] [value].
创建bitmaps的时候需要注意一开始的偏移量不应过大,否则容易造成初始化缓慢,造成redis的阻塞
2.getbit命令
2.获得bitmaps中的值
getbit [key] [offset]
这个操作可以获得某个偏移量的值
3.bitcount命令
在学习第三个命令的时候需要对字节有一定概念,在计算机中,一个字节占8位二进制数。例如字符abc,对应的ASCII码分别为97,98,99。对应的二进制位就是01100001、 01100010和01100011
3.统计某两个字节中1的个数,这个命令非常使用
bitcount [key] [start] [end]
注意这其中的start与end表示字节,下面举例说明
加入一个bitmaps的值为 00000000 10001000 0101010101 11110000
bitcount [key] 0 1就表示第一个字节与第二个字节中1的个数 即返回2
bitcount [key] 1 2就表示第二个字节与第三个字节中1的个数 即返回6
如果不加start 与 end参数就表示查看所有bitmaps中1的个数
在上文中我们创建了一个bitmaps并且将其的第0,3,5,13设置位1.则这个bitmaps内部就是
10010100 00001000
4.bitop命令
4.bitop 可以做两个bitmaps集合的交集或者并集操作
bitop [operation] [destkey] [key1] [key2]
bitop会创建一个新的bitmaps存放key1 key2集合交集或者并集后留下来的结果
BITOP AND destkey srckey1 … srckeyN ,对一个或多个 key 求逻辑与,并将结果保存到 destkey
BITOP OR destkey srckey1 … srckeyN,对一个或多个 key 求逻辑或,并将结果保存到 destkey
BITOP XOR destkey srckey1 … srckeyN,对一个或多个 key 求逻辑异或,并将结果保存到 destkey
BITOP NOT destkey srckey,对给定 key 求逻辑非,并将结果保存到 destkey
BitMaps的使用场景:当活跃的用户量很大的时候使用bitmaps比较合适,当用户量比较小的时候应该使用set数据类型
二、Hyperloglog数据类型
HyperLogLog类型用于计算基数使用,基数(元素集合去重之后的结构)。比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。
这个工作其实在set集合与hash中可以实现,但是hyperloglog的效率以及使用的内存都非常的小,hyperloglog只需用占用12k的空间就可以进行2^64个元素的去重处理。
常用命令
1.pfadd命令
1.创建hyperloglog并且添加元素
pfadd [key] [element...]
一次可以添加多个元素,并且自动删掉重复的元素
2.pfcount命令
2.pfcount查看hyperloglog中元素个数
pfcount key
3pfmerge命令
3.pfmerge合并操作
pfmeger可以将两个hyperloglog集合进行去重并且合并
pfmerge new:program program program2
这个命令执行完成后会将 program与program2的所有元素去重且合并 添加到new:program中
Geospatial数据类型
Redis 3.2 中增加了对GEO类型的支持。GEO,Geographic,地理信息的缩写。该类型,就是元素的2维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作。
常用命令
1.geoadd命令
创建geospatial geoadd [key] [精度 维度] [城市名]
示例代码:
geoadd China:city 119.34 26.01 shanghai
geoadd China:city 116.45 39.96 beijing
2.geopos命令
通过城市名取得经纬度信息 geopos [key] [城市名]
geopos China:city shanghai
===>119.3
===>26.0
3.geodist命令
计算两地的直线距离 geodist [key] [城市1] [城市2] [计算结果的单位]
127.0.0.1:6379> geodist china:city beijing shanghai
"1071417.5676"
总结
本篇文章大致介绍了三种redis中的新数据类型