Redis 新数据类型

Bitmaps

简介:

Redis提供了Bitmaps可以实现 对位 的操作:

① Bitmaps本身不是一种数据类型,实际上及时字符串(key-value)。

② Bitmaps类似一个以位为单位的数组,数组的每个单元只能存储0和1,数组的下标在Bitmaps中叫做偏移量。

基础命令:

setbit [key] [offset] [value] 设置bitmaps中某个偏移量的值(0或1)
                            偏移量从0开始。
getbit [key] [offset] 取出bitmaps中某个偏移量的值
bitcount [key] [\st] [\ed] 获取value设置为1的数量(st、ed可选)
bitop and [result key] [key1] [key2] ... bitop是一个符合操作,可以将多个bitmaps
                        的and(交集)、or(并集)、not(非)、xor(异或)操作
                        结果保存在result key中

在第一次初始化Bitmaps时,如果偏移量非常大,那么整个初始化过程执行会非常慢,可能会造成Redis的阻塞。

redis的setbit设置或清除的是bit位置,bitcount设置的是byte设置

set和bitmaps对比

bitmaps能极大的节约空间。

HyperLogLog

简介:

​ 在工作中,经常遇到与统计相关的功能实现,比如统计网站PV(ageView),可以使用Redis的incr、incrby轻松实现。

​ 但像UV(UniqueVisitor,独立访客)、独立ip数、搜索记录数等需要去重和计数的问题,或者说是求集合中不重复元素个数的问题,就是 基数问题

​ HyperLogLog 是一种用来做基数统计的算法,HyperLogLog的显著特点是,在输入的元素数量或者体积非常庞大时,计算基数所需的空间总是固定。在Redis的具体实现中,每个HyperLogLog键只需要花费12kb内存,就可以计算接近2^64个不同元素的基数。

​ 但是,HyperLogLog只会根据输入元素来计算基数,而不会存储输入元素本身,所以HyperLogLog不能像集合那样,返回输入的各个元素。

基础命令:

pfadd [key] [value1] [value2] ... 往将值加入到key指定的HyperLogLog数据结构中
                            如果在添加后,HLL估计的近似基数发生变化,
                            则返回1,否则返回0。
pfcount [key1] [key2] ... 计算指定HLL的近似基数,可以计算多个HLL               pfmerge [result key] [key1] [key2] ... 将一个或者多个HLL合并后的结果存在
                                    result key当中

Geospatial

简介:

GEO提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等信息

有效的经度 从 -180度 到 180度。 有效的纬度 从 -85.05112827度 到 85.05112827度

当坐标位置超出范围时,该命令会返回一个错误 已添加的数据,是无法再次往里添加的。

基础命令:

geoadd [key] [longitute] [latitude] [value] 在key中添加包含经纬度信息的value
                                        
geopos [key] [value] 获取value的经纬度

geodist [key] [value1] [value2] 获取两个位置之间的直线距离

georadius [key] [longitude] [latitude] [radius] [m/km/ft/mi]
                            以给定的经纬度为中心,找出某一半径内的元素
上一篇
下一篇