Redis6新数据类型

Redis6新数据类型

Bitmaps

鉴于合理地操作位能够有效地提高内存使用率和开发效率。Redis6 推出了 一种新的“数据类型”——Bitmaps。

Bitmaps本身不是一个数据类型,实际上它就是字符串(key-value),只不过,他可以对字符串的位进行操作。我们可以把Bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,而对于数组的下标,我们将它称为偏移量。

命令描述
setbit key offest value设置key中偏移量offest的值为value(0或1)
getbit key offest获取key中偏移量为offest的值
bitcount key [start] [end]获取key中偏移量从start8 到 end8 范围内1的个数
start和end可以不写,表示0到-1,即求key中所有的1的数量
bitop and destkey key1 key2 … keyn求多个key 的交集,并将结果保存到destkey
bitop or destkey key1 key2 … keyn求多个key 的并集,并将结果保存到destkey
bitop not destkey key1 key2 … keyn求多个key 的非,并将结果保存到destkey
bitop xordestkey key1 key2 … keyn求多个key 的异或,并将结果保存到destkey

注意:
1、为什么bitcount的start和end要*8呢?因为start和end表示的不是简单的偏移量,而是字节,而一个字节等于8位,即8个偏移量,所以,我们在算的时候,要乘以8.
2、多个key的交集就是偏移量相等的情况下,值都为1的个数。
并集就是偏移量不相等的情况下,值为1的个数相加,再加上偏移量相等情况下,值为1的个数。

简单说一下bitmap的并吧,然后其他的应该就都懂了,举个例子,key1和key2是两个Bitmap变量。我们求他们的and,也就是并集。那么,就是让key1的值和key2的值做 &(与)运算,然后计算最后1的个数。

HyperLogLog

Redis中的HyperLogLog 主要用来做基数统计,他的优点是:在输入的元素的数量或者体积非常大的时候,计算基数所需的空间总是固定的,并且是很小的。

在Redis中,每个HyperLogLog 键只需要话费12 KB内存,就可以计算接近 2 的 64 次方 个不同元素的基数。这和计算基数时,元素越多耗费内存越大的集合形参鲜明的对比。

不过,由于HyperLogLog只会根据输入的元素来计算基数,而不会储存输入的基数,因此,HyperLogLog 不能像集合那样返回输入的各个元素。

命令描述
pfadd key element1 element2 …添加指定元素到key中
pfcount key计算key的基数
pfmerge destkey key1 key2 …把key1和key2的值放到destkey中(destkey也是HyperLogLog类型)

Geospatial

Redis3.2 中增加了对GEO(Geographic,地理信息)类型的支持。该类型就是元素的2维坐标。Redis基于该类型,提供了经纬度设置、查询、范围查询、距离查询、经纬度Hash等常见操作。

命令描述
geoadd key longitude1 latitude1 member1
longitude2 latitude2 member2 …
向key中添加若干个经度、维度、名称
geopos key member通过key和member获取经纬度信息
geodist key member1 member2 [m/km/mi/ft]获取key中member1和member2之间的直线距离(默认是米)
georadius key longitude latitude radius [m/km/mi/ft]以给定经纬度为圆心,radius为半径,找出key中在这个圆内的元素

注意:
1、两极无法直接添加,一般会下载城市数据,直接通过java程序一次性导入。
2、有效的经度从-180 到 180 度, 有效的纬度从-85.05112878 到 85.05112878。
3、当坐标位置超出指定范围,添加命令会返回错误。
4、已经添加的数据,无法再次添加。
5、m表示米,km表示千米,mi表示英里,ft表示英尺。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值