优点:
极致性能: 基于内存操作和高效的单线程 I/O 模型,读写速度极快。
数据结构丰富: 支持多种数据结构,如 String、Hash、List、Set、ZSet、Stream、Geo 等,编程模型灵活。
持久化与高可用: 提供 RDB (定时对整个数据集做快照)和 AOF(记录每一次写操作命令) 持久化机制,并通过 Redis Sentinel 和 Redis Cluster 提供主从切换和集群分片解决方案。
功能多样: 支持键过期、事务、发布订阅、Lua 脚本、流水线等技术特性,应用场景广泛。
缺点:
内存成本高: 数据存储在内存中,容量受硬件内存大小限制,大容量集群成本较高。
持久化与复制瓶颈: RDB 持久化
fork
可能阻塞主线程,主从复制在首次全量同步时会产生大量网络和 I/O 开销。启动恢复慢: 数据量大时,重启后加载数据到内存的过程耗时较长,期间服务不可用。
CPU 瓶颈: 单线程模型下,复杂的 O(N) 命令或大 Key 操作会阻塞后续请求。
分布式一致性: 集群模式在故障切换时存在数据弱一致性问题,可能丢失极少量数据。