Redis新数据类型
新数据类型
Bitmaps
命令
setbit
实例
getbit
实例
bitcount
实例
bitop
实例
Bitmaps与set 对比
HyperLogLog
命令
pfadd
实例
pfcount
实例
pfmerge
实例
Geospatial
命令
geoadd
实例
geopos
实例
geodist
实例
georadius
实例
Bitmaps
Ⅰ.Bitmaps 本身不是一种数据类型,实际上它就是字符串(key-value ),但是它可以对字符串的位进行操作。
Ⅱ.Bitmaps 单独提供了一套命令,所以在 Redis 中使用 Bitmaps 和使用字符串的方法不太相同。 可以把 Bitmaps 想象成一个以位为单位的数组数组的每个单元只能存储0和1,数组的标在 Bitmaps 中叫做偏移量。
命令
setbit
setbit<key><offset><value>设置 Bitmaps 中某个偏移量的值(0或1)
offset:偏移量从0开始
实例
没设置的都为0
getbit
getbit<key><offset>获取 Bitmaps 中某个偏移量的值
获取键的第 offset 位的值(从0开始算)
实例
bitcount
统计字符串被设置为1的 bit数。一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。start 和 end 参数的设置,都可以使用负数值:比如 -1 表示最后一个位,而 -2 表示倒数第二个位,start、end 是指 bit 组的字节的下标数,二者皆包含。
bitcount<key>[start end]统计字符串从 start 字节到 end 字节比特值为1的数量
实例
bitop
bitop and(or/not/xor)<destkey> [key...]
bitop 是一个复合操作,它可以做多个 Bitmaps的and(交集)、or(并集)、 not(非)、xor(异或)操作并将结果保存在 destkey 中。
实例
Bitmaps与set 对比
所以数据多时Bitmaps才更省空间
HyperLogLog
Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。
命令
pfadd
pfadd <key>< element>[element.] 添加指定元素到 HyperLogLog 中
实例
这里还可以同时加多个"" ""
将所有元素添加到指定 HyperLogLog 数据结构中。如果执行命令后 HLL估计的近似基数发生变化,则返回1,否则返回 0。
pfcount
pfcount<key> [key ….]计算 HLL的近似基数,可以计算多个 HLL,比如用 HLL 存储每天的 UV,计算一周的 UV 可以使用7 天的 UV 合并计算即可
实例
pfcount hll1 "redis"
pfmerge
pfmerge<destkey><sourcekey>[sourcekey ..]将一个或多个 HLL 合并后的结果存储在另一个HLL中,比如每月活跃用户可以使用每天的活跃用户来合并计算可得
实例
将hll1和hll2合并到hll3
Geospatial
命令
geoadd
gegadd<key>< longitude><latitude><member> [longitude latitude member...] 添加地理位置(经度,纬度,名称)。
实例
geopos
geopos <key><member>[member...]获得指定地区的坐标值
实例
geoadd china:city shanghai
geodist
geodist<key><member1><member2>[m|km|ft|mi] 获取两个位置之间的直线距离
实例
m 表示单位为米[默认值]。
km 表示单位为千米。
mi 表示单位为英里。
ft 表示单位为英尺。
georadius
georadius<key>< longitude><latitude>radius m|km|ft|mi 以给定的经纬度为中心
找出某一半径内的元素。