目录
1 BitMaps
1.1 简介
Redis提供BitMaps这个“数据类型”,可以实现对位的操作。
Bitmaps本身不是一种数据类型,实际上他就是字符串,但它可以对字符串的位进行操作
Bitmaps单独提供了一套命令,所以使用Bitmaps和使用String不太一样。可以把Bitmaps想象成一个以位为单位的数组,数组的每个存储单位只能存储0或者1。数组的下标在Bitmaps里面叫做偏移量(偏移量从0开始)
1.2 常用命令
setbit <key> <offset> <value> :设置BItmaps中某个偏移量的值
getbit <key> <offset> :获取Bitmaps中某个偏移量的值
bitcount <key> :计算Bitmaps类型的key对应的偏移量中值为1的个数
bitcount <key> [start] [end] :计算Bitmaps类型的key对应的偏移量从start~end中值为1的个数
bitop and/or/not/xor <new > <key1> <key2>: 就是将key1和key2的运算结果集放到新的bitmap new中。运算的集合就是两个bitmap中的偏移量和偏移值
2 HyperLogLog
2.1 简介
Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。
HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。
什么是基数?
比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。
也就是说相当于Java中的set集合,是不可重复的,或者说会去重。
2.2 常用命令
pfadd <key> <element> [element...] :添加指定元素到HyperLogLog中
pfcount <key> [key ...] :计算key中元素个数的近似基数,可以计算多个key,会将多个key中的元素个数累加
pfmerge <destkey> <source> [source..] :将后面的hyperloglog全部复制到最前面的一个里面。操作后,后面的其他的hyperloglog不会有影响,不会消失。
3 Geospatial
3.1 简介
Redis 3.2 中增加了对GEO类型的支持。GEO,Geographic,地理信息的缩写。该类型,就是元素的2维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作
3.2 常用命令
geoadd <key> < longitude> <latitude> <member> [longitude latitude member...] 添加地理位置(经度,纬度,名称)
两极无法直接添加,一般会下载城市数据,直接通过 Java 程序一次性导入。
有效的经度从 -180 度到 180 度。有效的纬度从 -85.05112878 度到 85.05112878 度。
当坐标位置超出指定范围时,该命令将会返回一个错误。
已经添加的数据,是无法再次往里面添加的。
geopos <key> <member> [member...] 获得指定地区的坐标值
geodist <key> <member1> <member2> [m|km|ft|mi ] 获取两个位置之间的直线距离
m 表示单位为米[默认值]。
km 表示单位为千米。
mi 表示单位为英里。
ft 表示单位为英尺。
如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位
georadius <key>< longitude><latitude>radius m|km|ft|mi 以给定的经纬度为中心,找出某一半径内的元素