redis面试专题
2026-01-06 10:18:56 0 举报
AI智能生成
Redis面试专题精粹涵盖了一系列核心概念与实际应用问题,旨在考察求职者的理论知识和实战技能。本专题内容包括但不限于:Redis的数据结构(如String、List、Set、Sorted Set和Hash),持久化机制(RDB和AOF),以及主从复制和高可用解决方案(如哨兵和集群模式)。此外,还会探讨Redis性能优化的要点,例如数据过期策略、内存管理及发布/订阅模式。深入理解缓存策略、事务处理和脚本编写(Lua脚本)也是本专题考核的重点。
作者其他创作
大纲/内容
Redis 6为什么引入了多线程
网络io瓶颈
提升带宽利用率
降低延迟
充分利用多核cpu
Redis的热Key问题如何解决
本地缓存
请求分摊
限流
监控和报警
热点探测系统
Redis的大Key问题如何解决
大key会带来什么问题
阻塞请求
使用DEL命令删除一个大Key时,Redis是单线程的,可能会阻塞其他请求一段时间,导致服务抖动。对于更严重的情况,使用KEYS *、HGETALL、LRANGE 0 -1等命令会直接导致短暂的服务不可用
网络阻塞
读取一个1MB的Key,会导致网络流量瞬间增加1MB,如果并发高,可能会打满网卡带宽
内存分布不均
可能导致集群环境下某个数据分片内存使用率远高于其他节点,无法平衡负载
迁移/持久化困难
在生成RDB快照或AOF重写时,父进程fork子进程,大Key会导致写时复制(Copy-On-Write)分配大量内存,甚至内存溢出。数据迁移时也容易超时
什么是大key
String类型: 值大小超过 10KB(建议阈值),甚至到MB级别。例如:一个巨大的JSON字符串、一张Base64编码的大图片。
Hash/List/Set/ZSet类型: 元素数量过多(例如超过 5000个)或总价值过大(例如超过10MB)。例如:一个存储了全网用户ID的Set、一个记录用户所有操作历史的List。
解决方案
拆分大key
压缩数据
异步删除
Redis中key过期了一定会立即删除吗
惰性删除
过期时间到后,不会立即删除,而是再次访问数据的时,发现数据key已经过期则删除
定期删除
每100ms检查过期key
Redis的Key和Value的设计原则有哪些
key设计原则
短小精炼
使用命名空间
避免热key
唯一和通用的标识方式
value设计原则
选择合适的业务数据结构
限制单个value的大小
利用压缩
TTL时间设置
Redis线上操作最佳实践有哪些
优化数据结构
设置合理的过期时间
使用持久化策略
监控和告警
规模化和高可用性
设计良好的命名空间
减少网络延迟
参数调优
客户端重试策略
访问控制与安全
0 条评论
下一页