Redis高频面试题(升级版)

83 阅读3分钟

本文应该不存在标题党!!这份内容应该算是最新的了,也是内容深度较高的一份。

如果你觉得不错,就点个赞吧!

概述

  • 什么是 Redis?
  • Redis 有哪些优缺点?
  • 为什么要用 Redis / 为什么要用缓存?
  • 为什么要用 Redis 而不用 map/guava 做缓存?
  • Redis 为什么这么快?

数据类型

  • Redis 有哪些数据类型?
  • Redis 的应用场景?

持久化

  • 什么是 Redis 持久化?
  • Redis 的持久化机制是什么?各自的优缺点?
  • 如何选择合适的持久化方式
  • Redis 持久化数据和缓存怎么做扩容?
  • 过期键的删除策略
  • Redis 的过期键的删除策略
  • Redis key 的过期时间和永久有效分别怎么设置?
  • 我们知道通过 expire 来设置 key 的过期时间,那么对过期的数据怎么处理呢?

内存相关

  • MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据
  • Redis 的内存淘汰策略有哪些
  • Redis 主要消耗什么物理资源?
  • Redis 的内存用完了会发生什么? -Redis 如何做内存优化?

线程模型

  • Redis 线程模型

事务

  • 什么是事务?
  • Redis 事务的概念
  • Redis 事务的三个阶段
  • Redis 事务相关命令
  • 事务管理(ACID)概述
  • Redis 事务支持隔离性吗
  • Redis 事务保证原子性吗,支持回滚吗
  • Redis 事务其他实现

集群方案

  • 哨兵模式
  • 官方 Redis Cluster 方案(服务端路由查询)
  • 基于客户端分配
  • 基于代理服务器分片

Redis 主从架构

  • Redis 集群的主从复制模型是怎样的?
  • 生产环境中的 redis 是怎么部署的?
  • 说说 Redis 哈希槽的概念?
  • Redis 集群会有写操作丢失吗?为什么?
  • Redis 集群之间是如何复制的?
  • Redis 集群最大节点个数是多少?
  • Redis 集群如何选择数据库?

分区

  • Redis 是单线程的,如何提高多核CPU的利用率?
  • 为什么要做 Redis 分区?
  • 你知道有哪些 Redis 分区实现方案?
  • Redis 分区有什么缺点?

分布式问题

  • Redis 实现分布式锁
  • 如何解决 Redis 的并发竞争 Key 问题
  • 分布式 Redis 是前期做还是后期规模上来了再做好?为什么?
  • 什么是 RedLock

缓存异常

  • 缓存雪崩
  • 缓存穿透
  • 缓存击穿
  • 缓存预热
  • 缓存降级
  • 热点数据和冷数据
  • 缓存热点 key

常用工具

  • Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
  • Redis 和 Redisson 有什么关系?
  • Jedis 与 Redisson 对比有什么优缺点?

其他问题

  • Redis 与 Memcached 的区别
  • 如何保证缓存与数据库双写时的数据一致性?
  • Redis 常见性能问题和解决方案?
  • Redis 官方为什么不提供 Windows 版本?
  • 一个字符串类型的值能存储最大容量是多少?
  • Redis 如何做大量数据插入?
  • 假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
  • 使用 Redis 做过异步队列吗,是如何实现的
  • Redis 如何实现延时队列
  • Redis 回收进程如何工作的?
  • Redis 回收使用的是什么算法?

本文分享给需要面试刷题的朋友,也祝愿大家顺利拿到自己想要的offer,这份资料主要包含了Java基础,数据结构,jvm,多线程等等,由于篇幅有限,以下只展示小部分面试题,

有需要完整版的朋友可以点一点链接跳转领取,链接:戳这里免费下载,获取码:掘金

在这里插入图片描述