Java经典面试题—Redis面试题汇总的答案如下:
Redis的基本介绍:
- Redis是一款内存数据库,以KeyValue形式存储。
- 它以惊人的性能著称,每秒可处理超过10万次读写操作。
- 支持多种数据结构,如List、Set和有序集合等,能实现消息队列、高性能的tag系统等。
Redis的持久化机制:
- RDB:定期备份内存数据到硬盘,适合大规模数据恢复。
- AOF:记录每次操作以恢复数据,在数据完整性方面更优,但占用空间大、恢复慢。
- 选择持久化策略时需权衡性能和数据安全性。
Redis的性能优势:
- 内存操作,访问速度快。
- 简单数据结构,易于管理和操作。
- 单线程设计,保证了命令的原子性,避免了并发带来的复杂性。
- 多路I/O复用模型和自定义VM机制,提高了I/O处理效率。
Redis的原子性和事务处理:
- 原子性保证是通过单线程和精心设计的API实现的。
- 事务处理用于保证批量操作的原子性。
Redis的一致性维护:
- 采用双删策略、缓存过期时间以及处理缓存失效重试等方法来维护数据库和缓存的一致性。
- 通过延时双删、缓存过期和处理缓存击穿、雪崩的方式解决与MySQL数据库的一致性问题。
- 使用布隆过滤器、随机过期时间等手段防止缓存穿透和雪崩。
Redis的高可用性:
- 哨兵模式:用于故障切换,当Master节点异常时,Sentinel会监控并自动切换至备用Slave。
- 集群解决方案:包括twemproxy、Codis、Redis Cluster等,各有优缺点。
- 哈希槽:Redis集群的关键概念,用于将键分布在不同的节点上。
Redis的应用场景:
- 会话缓存、全页缓存、队列、排行榜/计数器、发布/订阅等。
- 在项目中,Redis广泛应用于缓存、分布式锁和消息队列等场景,提高系统性能和并发处理能力。