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

“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事务

==========================================================================

  • Redis事务本质:一组命令的集合,一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行,特性:一次性,顺序性,排他性

  • Redis单条命令是保证原子性的,但是事务不保证原子性

  • 常用的命令:

开启事务:multi

开启后可以输入命令入列

执行事务:exec

取消事务:discard

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

OK

127.0.0.1:6379> multi # 开启事务

OK

127.0.0.1:6379> set name xiec #输入命令入列

QUEUED

127.0.0.1:6379> set age 23

最后

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

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

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

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

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

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

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

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值