回答知识总结04(redis)

📅 发布时间:2026/8/8 16:39:06
回答知识总结04(redis)
1、redis为什么这么快Redis 基于内存操作采用 IO 多路复用命令执行单线程规避锁竞争搭配高度优化的数据结构因此性能极高。2、数据类型及其对应的底层结构String 底层基于 SDS分 int、embstr、rawList 采用 quicklistHash、Set、ZSet 数量小时用 ziplist量大后切换 dict、intset、skiplist。3、SDS是什么SDS 是 Redis 自定义动态字符串解决 C 原生字符串缺陷支持 O (1) 获取长度、二进制安全、自动扩容作为字符串底层载体。4、Zset怎么实现的ZSet 小数据用压缩列表 ziplist大数据采用跳表加字典双结构字典实现 O (1) 查分数跳表实现有序范围查询。5、Hash的扩容渐进式rehash是什么dict 拥有两张哈希表达到负载因子触发扩容渐进式 rehash 借助 rehashidx每次访问顺带迁移部分桶防止一次性迁移阻塞 Redis 主线程。6、Redis为什么设计成单线程为什么6.0之后引入多线程早期单线程是为避免锁竞争、简化并发控制Redis6 引入多线程仅并行处理网络读写命令执行依旧串行用来提升高并发下的网络吞吐。7、Io多路复用是什么IO 多路复用允许单个线程监控众多 socket内核通知就绪事件只处理活跃连接Linux 下 epoll 效率最高是 Redis 高并发的重要基础。8、持久化机制RDB 是全量内存快照AOF 增量记录写命令支持日志重写4.0 混合持久化结合两者优势生产一般双开兼顾性能与数据安全。9、数据库、redis双写一致性问题、出现原因和解决方案双写不一致主要由并发读写、操作失败导致最优常规方案为先更新数据库再删除缓存配合过期时间兜底高可用架构可用 Canal 监听 binlog 异步失效缓存。10、分布式锁怎么实现setnx有什么问题redission是什么11、过期删除和内存淘汰策略12、主从复制原理13、缓存的穿透、击穿、雪崩是什么解决方案是什么