优点:
- 速度快:数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
- 支持丰富的数据结构:支持 String ,List ,Set ,Sorted Set ,Hash 五种基础的数据结构。
- 持久化存储:
Redis 提供 RDB 和 AOF 两种数据的持久化存储方案,解决内存数据库最担心的 万一 Redis 挂掉,数据会消失掉
-
高可用:内置Redis Sentinel,提供高可用方案,支持主从故障自动转移。
内置Redis Cluster,提供集群方案,实现基于槽的分片方案,从而支持更大的Redis规模。
-
丰富的特性:Key过期、计数、分布式锁、消息队列等等。
缺点:
- 由于Redis是内存数据库,所以,单台机器,存储的数据量和机器本身的内存大小有关。虽然Redis本身有Key过期策略,但是还是需要提前预估和节约内存,如果内存增长过快,需要定期删除数据,比较麻烦。
-
如果进行完整重同步,由于需要生成RDB文件,并进行传输,会占用主机的CPU,并会消现网的带宽。不过Redis2.8版本,已经有部分重同步的功能,但是还是有可能有完整重同步的。
-
会产生内存碎片。随着时间的推移和数据的频繁修改,Redis可能会出现内存碎片问题,这需要通过手动干预来整理内存碎片。
-
备份复杂:由于Redis的高性能特性,其备份过程需要更加谨慎,以确保不会影响到在线服务的性能。
-
修改配置文件,进行重启,将硬盘中的数据加载进内存,时间比较久。在这个过程中,Redis不能提供服务。