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

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

常用命令:

  • 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

QUEUED

127.0.0.1:6379> set sex nan

QUEUED

127.0.0.1:6379> get name

QUEUED

127.0.0.1:6379> exec # 执行事务,如果想放弃可以输discard

  1. OK

  2. OK

  3. OK

  4. “xiec”

127.0.0.1:6379> get name # 简单测试

“xiec”

[](()Redis事务异常

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

主要分为两种(可以联系java中的异常进行记忆):

  • 编译型异常:也就是开启事务后,在命令入列的时候就 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 报错了,那样的化在事务中的所有命令都不会被执行

  • 运行时异常:也就是命令都正常入列了,但是通过exec命令执行的时候报错了,那种情况,其他命令正常执行,只有那个错误的命令会把错误抛出来。

[](()watch


通过watch命令可以对一个key进行一个监控,如果在一个事务中,发现这个key的值和开始监控的不一样了,就不进行操作,也可以通过unwatch进行放弃监控操作。


总结

三个工作日收到了offer,头条面试体验还是很棒的,这次的头条面试好像每面技术都问了我算法,然后就是中间件、MySQL、Redis、Kafka、网络等等。

  • 第一个是算法

关于算法,我觉得最好的是刷题,作死的刷的,多做多练习,加上自己的理解,还是比较容易拿下的。

而且,我貌似是将《算法刷题LeetCode中文版》、《算法的乐趣》大概都过了一遍,尤其是这本

《算法刷题LeetCode中文版》总共有15个章节:编程技巧、线性表、字符串、栈和队列、树、排序、查找、暴力枚举法、广度优先搜索、深度优先搜索、分治法、贪心法、动态规划、图、细节实现题

Redis三大特殊类型介绍:GEO,hyperloglog,bitmap,Redis事务_第1张图片

《算法的乐趣》共有23个章节:

Redis三大特殊类型介绍:GEO,hyperloglog,bitmap,Redis事务_第2张图片

Redis三大特殊类型介绍:GEO,hyperloglog,bitmap,Redis事务_第3张图片

  • 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)

基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)

Redis三大特殊类型介绍:GEO,hyperloglog,bitmap,Redis事务_第4张图片

  • 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)

Redis三大特殊类型介绍:GEO,hyperloglog,bitmap,Redis事务_第5张图片

基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)

[外链图片转存中…(img-VOADgfDA-1650349651713)]

  • 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)

[外链图片转存中…(img-mFXRTH1r-1650349651714)]

你可能感兴趣的:(Java,经验分享,面试,java)