一、基础原理相关
-
Redis是什么?它有哪些特点?
- 内存数据库,支持持久化
- 单线程模型,基于事件驱动
- 支持多种数据结构
- 高性能,读写速度快
- 支持主从复制、哨兵、高可用和集群
-
Redis和Memcached的区别?
- Redis支持多种数据结构,Memcached只有KV
- Redis支持持久化,Memcached不支持
- Redis支持主从复制和集群,Memcached支持分布式但实现不同
- Redis功能更丰富(事务、Lua脚本)
-
Redis的单线程是如何保证高性能的?
- 避免了线程切换和锁竞争开销
- 使用I/O多路复用技术
- 操作尽量在内存完成,速度快
-
Redis持久化方式有哪些?
- RDB(快照方式)
- AOF(追加文件方式)
- 混合持久化(Redis 4.0+)
-
Redis数据是如何存储的?
- 采用字典(哈希表)存储key-value
- 使用压缩列表、跳表等多种数据结构优化内部存储
二、数据结构相关
-
Redis支持哪些数据结构?
- String、List、Set、ZSet(有序集合)、Hash、Bitmap、HyperLogLog、Geo
-
Redis的String类型最大可以存储多大数据?
- 最大512MB
-
什么是Redis的List?它的应用场景?
- 双向链表结构,支持push/pop操作
- 用于消息队列、任务队列、排行榜等
-
Set和Sorted Set有什么区别?
- Set是无序集合,不重复
- Sorted Set带分数,自动排序
-
Hash类型的特点和适用场景?
- 键值对集合,适合存储对象
三、性能优化相关
-
Redis为什么要做内存淘汰?
- 限制内存使用,避免OOM
-
Redis支持哪些内存淘汰策略?
- noeviction、volatile-lru、allkeys-lru、volatile-random、allkeys-random、volatile-ttl
-
如何解决Redis的缓存击穿?
- 互斥锁(加锁)
- 预热缓存
- 使用热点缓存永不过期
-
什么是缓存雪崩?如何防止?
- 大量缓存同时失效,击穿数据库
- 设置缓存过期时间错开,增加二级缓存
-
Redis集群的原理和特点?
- 数据分片存储,自动分片
- 节点间通信保持一致
- 提供高可用和横向扩展
四、应用和实战
-
Redis事务是如何实现的?
- 通过MULTI/EXEC命令打包执行
- 不支持回滚,执行失败不会自动回滚
-
Redis Lua脚本有什么优势?
- 保证脚本原子执行
- 减少网络交互,提高效率
-
如何实现分布式锁?
- 使用SET key value NX PX milliseconds命令
- Redlock算法(多节点锁)
-
Redis哨兵是什么?它的作用?
- 监控主从实例状态,实现主节点故障自动切换
-
Redis常见的内存优化方法?
- 使用合理的数据结构(比如hash存储小对象)
- 压缩列表、快速列表等优化内部存储
- 合理设置过期时间