09 Redis-新的数据结构

Bitmaps

Bitmaps本身不是实际数据类型,它只是对字符串的位图进行操作。(适用于活动量多的)

HyperLogLog

在实际中,我们经常会遇到与统计相关的功能需求,比如统计网站PV(pageView页面访问量),可以使用Redis的incr和incrby就可以搞定的。但是redis提供了HyperLogLog用来做基数统计的算法,当我们在输入元素的数量或者体积很大的时候,计算基数所需要的空间是固定的。每个HyperLogLog键只需要12KB内存,就可以计算按近2^64个不同的基数。(去重功能)

命令

  • Pfadd/pfcount(添加/统计)
127.0.0.1:6379> pfadd hyper1 "hadoop"
(integer) 1
127.0.0.1:6379> pfadd hyper1 "spark"
(integer) 1
127.0.0.1:6379> pfadd hyper1 "kafka"
(integer) 1
127.0.0.1:6379> pfadd hyper1 "kafka"
(integer) 0
127.0.0.1:6379> pfcount hyper1
(integer) 3
  • Pfmerge(合并),如下hyper1有3个元素和hyper2有2个元素,合并后hyper3就有5个了
127.0.0.1:6379> pfadd hyper1 "hadoop"
(integer) 1
127.0.0.1:6379> pfadd hyper1 "spark"
(integer) 1
127.0.0.1:6379> pfadd hyper1 "kafka"
(integer) 1
127.0.0.1:6379> pfadd hyper2 "java"
(integer) 1
127.0.0.1:6379> pfadd hyper2 "python"
(integer) 1
127.0.0.1:6379> pfmerge hyper3 hyper1 hyper2
OK
127.0.0.1:6379> pfcount hyper3
(integer) 5

总结:用于解决基数问题

Geospatial

Redis 3.2中增加了对GEO类型的支持,GEO(Geograhic),地理信息的缩写。该类型就是2维坐标,在地图就是经纬度。Redis基于该类型,提供了经纬度设置、查询、范围查询、距离查询、经纬度hash等常见操作。

命令

  • GEOADD
127.0.0.1:6379>GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
  • geodist:km单位或者m都可以
127.0.0.1:6379>geodist Sicily Palermo Catania km
  • GEORADIUS:以给定的经纬度为中心,找出某一半经内的元素

更多文章已被Github收录:https://github.com/niutongg/JavaLeague

4B544609-FA1C-4FE1-B99A-041A94838FAF.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值