Redis系列之二:Redis基础知识,面试时有哪些技巧

Redis列表通常用来做异步队列使用,将需要延后处理的任务序列化成字符串塞进Redis的列表,另外一个线程从这个列表中轮询数据进行处理。

右边进左边出:队列,操作如下所示。

这里写图片描述

右边进右边出:栈,操作如下所示。

3.hash(字典)

Redis中的字典用于保存键值对数据,它类似于Java中的HashMap,内部的实现细节为数组和链表。当发生碰撞时,在碰撞的节点会将元素链接成为元素链表。但是Redis的字典和Java中的HashMap安排还是有区别的,Redis中的字典的key都是string,同时refresh的策略也是不一样的。HashMap的refresh策略是进行全局的reresh,所以当HashMap很大时,refresh的过程将是一个耗时的操作。内部存储结构如下图所示:

这里写图片描述

常用命令,如下所示:

这里写图片描述

其他命令如下表所示:

| 命令 | 作用 |

| — | :-: |

| hsetnx | 设置key对应的HashMap中的field的value,如果不存在则先创建 |

| hmset | 批量设置key对应的HashMap中的field的value |

| hmget | 批量获取key对应的HashMap中的field的value |

| hexits | 测试key对应的HashMap中的field是否存在 |

| hincrby | 给key对应的HashMap中的field的value加指定的值 |

| hlen | 返回key对应的HashMap中的field的数量 |

| hdel | 删除key对应的HashMap中的field |

| hkeys | 返回key对应的HashMap中所有的field |

| hvals | 返回key对应的HashMap中所有的field的value |

4.set(集合)

Redis 数据结构中的集合相当于 Java 中的 HashSet,它内部的键值对是无序的唯一的。它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值NULL。与List不同的是set不能出现相同的数据。

这里写图片描述

常用命令,如下所示:

这里写图片描述

其他命令如下表所示:

| 命令 | 作用 |

| — | :-: |

| sdiff | 求给定key对应的set与第一个key对应的set的差集 |

| suion | 求给定key对应的set并集 |

| sinter | 求给定key对应的set交集 |

| srem | 删除key对应的set中的一个元素 |

| sdiffstore | 求给定key对应的set与第一个key对应的set的差集,并存储到另一个key对应的set中 |

| sinterstore | 求给定key对应的set交集,并存储到另一个key对应的set中 |

| suionstore | 求给定key对应的set并集,并存储到另一个key对应的set中 |

| somve | 从第一个key对应的set中删除指定元素并添加到第二个key对应的set中 |

| scard | 返回key对应的set的元素个数 |

| sismember | 测试某个元素是否为key对应的set中的元素个数 |

5.zset(有序集合)

zset 可能是 Redis 提供的最为特色的数据结构,它也是在面试中面试官最爱问的数据结构。它类似于 Java 的 SortedSet 和 HashMap 的结合体,一方面它是一个 set,但是相对于无序set来说zset是有有序的,同时保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权重。它的内部实现用的是一种叫做「跳跃列表」的数据结构。

zadd books 9.0 “think in java”

(integer) 1

zadd books 8.9 “java concurrency”

(integer) 1

zadd books 8.6 “java cookbook”

(integer) 1

zrange books 0 -1 # 按 score 排序列出,参数区间为排名范围

  1. “java cookbook”

  2. “java concurrency”

  3. “think in java”

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

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

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

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

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

我想问下大家当初选择做程序员的初衷是什么?有思考过这个问题吗?高薪?热爱?

既然入了这行就应该知道,这个行业是靠本事吃饭的,你想要拿高薪没有问题,请好好磨练自己的技术,不要抱怨。有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?

架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。

如果你也想成为一名好的架构师,那或许这份Java核心架构笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。

中高级开发必知必会:

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

N-1712664396203)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-a24tL71r-1712664396203)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值