Redis面试题记录

Redis 为什么快?

  1. 纯内存操作:数据都在内存里面,纳秒级别,像mysql读磁盘是毫秒级别,就很慢。
  2. 单线程模型,避免锁竞争:没有多线程的锁、切换等。
  3. IO多路复用:使用select/epoll同时监听多个连接,一个线程实现多并发。
  4. 命令处理简单高效:用的键值模型,底层数据结构简单,命令执行复杂度大多是O(1)或者O(logN)。
  5. 使用C语言实现,效率高。
  6. 使用RESP,网络协议简单,数据包小。

Redis 有哪些常用的数据结构?

字符串(string)、哈希(Hash)、列表(List)、集合(Set)、有序集合(ZSet)。

Redis RDB 和 AOF 持久化的区别,如何选择?

RDB :定时拍快照,全量备份。把内存数据全量保存在.rdb文件,文件小是压缩二进制,恢复速度超级快。如果宕机会丢数据。追求性能,可以接受部分数据丢失。

AOF :记录一条写命令,实时日志 。把所有写命令追加到.aof日志中,不存数据,基本不丢数据,但是存的文件很大,是纯文本。追求数据绝对安全,不丢数据。

最好两个同时开启使用,最稳妥,恢复时使用AOF,保证数据完整。

如何解决缓存击穿、缓存穿透、雪崩问题?

缓存击穿:某个热点key过期了,或大量并发同时请求这个key,导致数据库崩。

解决缓存击穿:

  • 添加互斥锁;
  • 热点key设置永不过期;
  • 加逻辑过期和后台定时刷新。

缓存穿透:查不存在的数据,查不到还反复查数据库,大量恶意请求导致DB被打垮。

解决缓存穿透:

  • 缓存空值(查不到就存一个空值,设置短暂过期);
  • 使用布隆过滤器;
  • 接口做参数校验、限流、黑名单。

缓存雪崩:大量key同一时间集体过期,或者redis宕机,所有请求同时到数据库。

解决雪崩:

  • 过期时间加随机值,避免同时大批量过期;
  • 搭建redis集群,防止单点挂导致的雪崩;
  • 多级缓存;
  • 限流、熔断、降级保护数据库;
  • 互斥锁/队列。
相关推荐
数据工匠老o21 分钟前
"能用应用层解决的不用存储过程",十年数据库经验总结
数据库·架构
AC赳赳老秦30 分钟前
公开音频转写信息提取:OpenClaw 处理发布会与听证会文本并提取核心决策信息
大数据·开发语言·汇编·数据库·人工智能·deepseek·openclaw
老纪的技术唠嗑局1 小时前
异步索引特性解析:OceanBase 如何提升持续写入场景下的索引检索性能
数据库
老纪的技术唠嗑局1 小时前
Tibo 谈 Codex:harness 总比模型快一步
数据库·人工智能
猫咪宝妖1 小时前
信息安全工程师 第四级 结构化保护级
网络·数据库·安全
Andreapiki1 小时前
风险审计校招技术栈拆解:SQL、Python、Power BI在2026届JD中的真实权重
数据库·python·sql
nvd112 小时前
从存算一体到现代湖仓:对标传统关系型数据库透视 Bucket + Iceberg + Trino 的物理本质
数据库·bigdata
夕除2 小时前
redis--UV
redis
JosieBook2 小时前
【数据库】MySQL 实战精通系列 · 第8篇:慢查询治理与性能优化实战
数据库·mysql·性能优化
TDengine (老段)3 小时前
TDengine TSDB 实战排障四(升级与兼容)
android·java·大数据·数据库·物联网·时序数据库·tdengine