大厂面试---Redis面试题(含答案,相关知识点,面试考察次数统计)

大厂面试---Redis面试题(含答案,相关知识点,面试考察次数统计)_安吉_lh1029的博客-CSDN博客

大厂面试问答题汇总分析---数据库(索引-聚集/非聚集,事务,mySql, 锁)_安吉_lh1029的博客-CSDN博客

大厂面试问答题汇总分析---网络安全类问题_安吉_lh1029的博客-CSDN博客

大厂面试问答题汇总分析--- 秒杀 / 限流 / 高并发_安吉_lh1029的博客-CSDN博客

【锁】的相关概念汇总_安吉_lh1029的博客-CSDN博客

大厂面试问答题汇总分析--- 多线程问题_安吉_lh1029的博客-CSDN博客

概述摘要:

Redis(本质是内存数据库),【数据库】相关题目在历届大厂面试中占比20%到30%之间 【根据600多道大厂面试题】,有的公司该类题目占比比例会更高。本文梳理就是针对高频题目和相关知识点的梳理学习,包含高频问题和相关所有答案

面试题目考察频次列表(仅以本次大厂面经提供题目,进行归纳分析,作为样本)

【超高频】 考察次数 > 5
【高频】 5 >= 考察次数 > 3
【中频】 3 >= 考察次数 > 1
【普通】 考察次数 = 1

题目答案和相关知识点解析

1、【中频】Redis 网络模型是什么?

2、【普通】Redis在项目中都使用了哪些功能?

3、【超高频】Redis数据类型有哪些?对应使用场景?其中zSet的底层实现

----- zSet 相关问题:  zSet的底层结构是什么?zSet为什么用跳表实现?为什么不用红黑树?

4、【超高频】Reids如何持久化?有哪些持久化方式,优缺点是什么?

5、【中频】如何避免Redis缓存穿透?存在哪些缓存问题?

6、【高频】Redis 如何实现高可用的?

7、【高频】Reids如何实现分布式锁?

分布式锁实现比较【数据库】【Zookeeper】【Redis】

8、【高频】Reids的集群架构方案?master-slave模式,以及哨兵模式

【Redis集群】相关知识点

master-slave模式

哨兵模式

9、【中频】Redis的过期策略?过期键删除如何实现?

9-1 三种过期删除的策略比较(定时删除、惰性删除、定期删除)

9-2 redis采用的是定期删除+惰性删除策略

9-3、Redis内存淘汰机制

10、【普通】memcache与redis区别

11、【普通】redis为什么单线程的


题目答案和相关知识点解析

1、【中频】Redis 网络模型是什么?

Redis 就是一个高性能的数据库, Redis 的数据是存在内存中的,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。Redis 与其他 key - value 缓存产品有以下三个特点:

  • 支持数据的持久化,可将内存中的数据保存在磁盘中,重启时再次加载进行使用。
  • 不仅支持简单的key-value类型的数据,还提供list,set,zset,hash等数据结构的存储。
  • 支持数据的备份,即master-slave模式的数据备份

2、【普通】Redis在项目中都使用了哪些功能?

Redis 被广泛应用于缓存方向。另外,Redis 也经常用来做分布式锁。Redis 提供了多种数据类型来支持不同的业务场景。除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。

  • 会话缓存(最常用)
  • 消息队列(支付)
  • 活动排行榜或计数
  • 发布,订阅消息(消息通知)
  • 商品列表,评论列表

(可详看问题3中不同数据类型 支持 使用场景, 这种题一般结合其他知识点问,单独问的比较少,一般问Reids如何实现分布式锁? 如何避免Redis缓存穿透? 等

3、【超高频】Redis数据类型有哪些?对应使用场景?其中zSet的底层实现

支持的

数据类型

 存储结构  内部编码模式

使用

场景

1--String

(字符串)

JSON、XML, 二进制的图片等,但不能超过512MB

int:8个字节长整型

embstr:<=39个字节的字符串

raw:>39个字节的字符串

缓存, 计数

共享Session

限速

2--Hash

(字典)

键值对

ziplist(压缩列表):个数小于512个(默认)且所有值小于64字节(默认)

hashtable (哈希表):其余情况

存储、读取、修改用户属性

3--List

(列表)

多个有序的字符串, 最多可以存储2^32-1个元素

ziplist(压缩列表):同上

linkedlist(链表):其余情况

最新消息排行等功能(如朋友圈的时间线);消息队列

栈, 文章列表

4--Set

(集合) 

多个字符串元素,

不允许重复且无序

intset(整数集合):都是整数且个数小于512个(默认)

hashtable(哈希表):其余情况

用户标签,

抽奖功能

【超高频】

5--zSet、(有序集合)

不允许重复且可排序,每个元素设置score作排序依据

ziplist(压缩列表):有序个数小于128个(默认) 且所有值小于64字节(默认)

skiplist(跳跃表):其余情况

排行榜

延迟消息队列

----- zSet 相关问题:  zSet的底层结构是什么?zSet为什么用跳表实现?为什么不用红黑树?

【超高频】zSet的底层结构是什么?(或问排序原理/ 实现)答:是跳表

【中频】zSet为什么用跳表实现?为什么不用红黑树?两者对比

答:skiplist(跳表)1)是一种多层的有序链表

2)跳表查询:每在上层搜索一次就平均缩小了一半的搜索范围,平均时间复杂度为O(logn)

3)与【红黑树】比较:

跳表  红黑树
相同点 查询/插入/删除 复杂度两者相同,都为O(logn)
不同点 1、插入/删除 插入相邻节点 操作后需要调整
2、范围查询 更适合范围查询,找到范围最小值,在第一层遍历即可 效率没有跳表高
3、实现  更为简单 相对复杂

【普通】redis的数据结构,对长字符串和短字符串处理有什么不同?

答:Redis 会根据当前值的 类型 和 长度 决定使用哪种 内部编码实现。短字符串使用embstr(<=39个字节的字符串)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值