Redis三大特殊类型介绍:GEO,hyperloglog,bitmap,Redis事务

本文介绍了Redis中的地理空间命令如geodist、georadius和geohash,以及HyperLogLog和Bitmaps的数据结构应用。同时提及了Java开发者的学习资源,包括全套学习资料和面试题库,旨在帮助工程师提升技能和准备面试。
  • geoDist:用来计算两个地方的直线长度,单位默认为m,可以设置

127.0.0.1:6379> geodist china:city beijing hangzhou #数据都采用第一个通过geoadd增加进去的

“1122799.8036”

127.0.0.1:6379> geodist china:city beijing hangzhou km

“1122.7998”

  • georadius : 以某个纬度,经度为中心查询某半径内的所有满足条件的地方,前提是必须在同一个key中

127.0.0.1:6379> georadius china:city 116.40 35.00 1000 km # 以116.40,35.00为中心,方圆1000km的城市都进行一个查询

  1. “beijing”

  2. “changsha”

  3. “hangzhou”

  4. “shanghai”

127.0.0.1:6379> georadius china:city 116.40 35.00 1000 km withcoord count 2 # 加上count代表只展示较近的两个,然后加上withcoord表示展示经纬度

    1. “beijing”
    1. “116.39999896287918”
  1. “39.900000091670925”

    1. “shanghai”
    1. “121.47000163793564”
  2. “31.229999039757836”

  • georadiusbymember:以geo中的某个城市为中心进行范围查找,功能和georadius类似,不过中心点换了。

127.0.0.1:6379> georadiusbymember china:city shanghai 1000 km #还可以加排序等很多,大家可以自己测试下

  1. “changsha”

  2. “hangzhou”

  3. “shanghai”

  • geohash : 返回一个或多个位置的hash值(了解就好,一般不会使用)

127.0.0.1:6379> geohash china:city shanghai beijing

  1. “wtw3sj5zbj0”

  2. “wx4fbxxfke0”

  • geo底层由zset的一个简单体现(上面介绍的geo命令中是没有删除地理位置的表现)

127.0.0.1:6379> zrange china:city 0 -1 # 对所有城市进行一个查看

  1. “changsha”

  2. “hangzhou”

  3. “shanghai”

  4. “beijing”

127.0.0.1:6379> zrem china:city hangzhou # 删除值为hangzhou的城市

(integer) 1

127.0.0.1:6379> zrange china:city 0 -1

  1. “changsha”

  2. “shanghai”

  3. “beijing”

hyperloglog:一般用于基数统计,例如uv(一个网页被用户访问次数)


优点:占用内存少,2^64次方只需要12K

缺点:有一定的错误率,使用时需要允许有一定的容错性

常用命令:

  • pfadd:增加一个hyperloglog类型的key-value(集合)

  • pfcount:统计一个集合中不重复元素的个数

  • pfmerge:合并两个或多个集合

127.0.0.1:6379> flushdb # 演示需要,清空当前库

OK

127.0.0.1:6379> pfadd hyper1 a s d f g h j k l a # 创建一个hyperloglog类型,存入元素,

(integer) 1

127.0.0.1:6379> pfcount hyper1 # 统计不重复的元素有多少

(integer) 9

127.0.0.1:6379> pfadd hyper2 a s d f z x v

(integer) 1

127.0.0.1:6379> pfmerge hyper3 hyper1 hyper2 # 合并hyper1,hyper2 命名为hyper3

OK

127.0.0.1:6379> pfcount hyper3

(integer) 12

bitmaps :采用的是位存储,取值为0,1,一般用来记录两种状态,和用来统计。


  • 常用命令只有三个:

127.0.0.1:6379> flushdb #演示先清空当前库

OK

127.0.0.1:6379> setbit bitmap 0 0 # 设置一个bitmaps类型,然后将0标时为0

(integer) 0

127.0.0.1:6379> setbit bitmap 1 1

(integer) 0

127.0.0.1:6379> setbit bitmap 2 1

(integer) 0

127.0.0.1:6379> setbit bitmap 3 0

(integer) 0

127.0.0.1:6379> getbit bitmap 3 #用来get某一个标志位的值

(integer) 0

127.0.0.1:6379> getbit bitmap 2

(integer) 1

127.0.0.1:6379> bitcount bitmap #统计有多少个为1的

(integer) 2

Redis事务

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

一线互联网大厂Java核心面试题库

image

正逢面试跳槽季,给大家整理了大厂问到的一些面试真题,由于文章长度限制,只给大家展示了部分题目,更多Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等已整理上传,感兴趣的朋友可以看看支持一波!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
槽季,给大家整理了大厂问到的一些面试真题,由于文章长度限制,只给大家展示了部分题目,更多Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等已整理上传,感兴趣的朋友可以看看支持一波!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值