# 简介
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
# 优点
读写性能优异。
支持数据持久化,支持 AOF 和 RDB 两种持久化方式。
支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
数据结构丰富:数据结构丰富:支持 string、hash、set、sortedset、list 等数据结构。
# 缺点
Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的 IP 才能恢复。
主机宕机,宕机前有部分数据未能及时同步到从机,切换 IP 后还会引入数据不一致的问题,降低了系统的可用性。
Redis 的主从复制采用全量复制,复制过程中主机会 fork 出一个子进程对内存做一份快照, 并将子进程的内存快照保存为文件发送给从机,这一过程需要确保主机有足够多的空余内存。若快照文件较大,对集群的服务能力会产生较大的影响,而且复制过程是在从机新加入 集群或者从机和主机网络断开重连时都会进行,也就是网络波动都会造成主机和从机间的一 次全量的数据复制,这对实际的系统运营造成了不小的麻烦。
Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。