1. Redis是什么?Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的客户端。
2. Redis和Memcached有什么区别?1)Redis支持的数据类型更丰富;2)Redis支持数据持久化,可以将内存中的数据保存到磁盘上;3)Redis支持主从复制和集群;4)Redis支持事务。
Redis持久化机制
3. Redis的持久化机制有哪些?Redis支持RDB和AOF两种持久化机制。RDB是将数据定期快照保存到磁盘上,AOF是将每次写操作记录到日志文件中。
RDB优点:文件紧凑,适合备份;缺点:可能丢失数据。AOF优点:数据丢失少;缺点:文件较大,重启恢复慢。
Redis内存管理
4. Redis的内存淘汰策略有哪些?noeviction:不淘汰;allkeys-lru:LRU;allkeys-random:随机;volatile-lru:针对设置了过期时间的key;volatile-random:随机;volatile-ttl:剩余时间最短。
5. 如何优化Redis的内存使用?1)设置合理的maxmemory;2)选择合适的内存淘汰策略;3)使用合理的key设计,避免大key;4)使用pipeline减少网络开销。
Redis高可用
6. Redis的主从复制原理是什么?主节点异步复制数据到从节点,从节点可读可写,主节点故障时需要手动或哨兵切换。
7. Redis Sentinel的作用是什么?监控主从节点,实现故障自动切换,支持通知和配置提供。
Redis集群
8. Redis Cluster的工作原理是什么?基于16384个hash槽,数据分散到多个节点,支持自动故障转移。
9. Redis Cluster的优缺点?优点:无中心化、高可用;缺点:多key操作不支持、需要客户端支持。
Redis数据结构
10. Redis的List实现原理?双向链表,支持从两端高效插入删除。
11. Redis的Set实现原理?哈希表+跳表,支持交并差操作。
12. Redis的ZSet实现原理?哈希表+跳表,按score排序,支持范围查询。
Redis实际问题
13. 如何实现分布式锁?使用SETNX+EXPIRE,释放时用Lua脚本删除。
14. Redis如何实现缓存穿透?布隆过滤器、空值缓存。
15. Redis缓存雪崩怎么解决?随机过期时间、热点数据多级缓存。
16. Redis热点key怎么处理?本地缓存+双层缓存。
17. 大key怎么拆分?1)SSD BGSAVE升级;2)大数据分片存储;3)控制单key大小。
Q: Redis单线程为什么这么快?
A: 纯内存操作、非阻塞IO、多路复用、优化的数据结构。
Q: Redis事务支持回滚吗?
A: 不支持,只有EXEC前错误才回滚,EXEC后不回滚。
Q: Pipeline和事务区别?
A: Pipeline是客户端批量执行,事务是服务器保证原子性。
Q: Redis 6.0 I/O多线程优势?
A: 处理网络读写,提升吞吐量,主线程仍处理业务逻辑。