一. Redis官方网址
1. 英文网址: https://redis.io/
2. 中文网址: http://www.redis.cn/
二. Redis简介
1. Redis(Remote Dictionary Server), 即远程字典服务, 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库, 并提供多种语言的API。从2010年3月15日起, Redis的开发工作由VMware主持。
2. Redis是一个key-value存储系统。和Memcached类似, 它支持存储的value类型相对更多, 包括string(字符串)、list(链表)、set(集合)、zset(sorted set-有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作, 而且这些操作都是原子性的。在此基础上, Redis支持各种不同方式的排序。与Memcached一样, 为了保证效率, 数据都是缓存在内存中。区别是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件, 并且在此基础上实现了master-slave(主从)同步。
3. Redis是一个高性能的key-value数据库。redis的出现, 很大程度补偿了memcached这类key/value存储的不足, 在部分场合可以对关系数据库起到很好的补充作用。它提供了Java, C/C++, C#, PHP, JavaScript, Perl, Object-C, Python, Ruby, Erlang等客户端, 使用很方便。
4. Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步, 从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制, 使得从数据库在任何地方同步树时, 可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
5. Redis优点
5.1. 读写性能优异。
5.2. 支持数据持久化, 支持AOF和RDB两种持久化方式。
5.3. 支持主从复制, 主机会自动将数据同步到从机, 可以进行读写分离。
5.4. 数据结构丰富, 除了支持string类型的value外, 还支持list(链表)、set(集合)、zset(sorted set-有序集合)和hash(哈希类型)等数据结构。
6. Redis缺点
6.1. Redis不具备自动容错和恢复功能, 从机的宕机都会导致前端部分读写请求失败, 需要等待机器重启或者手动切换前端的IP才能恢复。
6.2. 主机宕机, 宕机前有部分数据未能及时同步到从机, 切换IP后还会引入数据不一致的问题, 降低了系统的可用性。
6.3. Redis的主从复制采用全量复制, 复制过程中主机会fork出一个子进程对内存做一份快照, 并将子进程的内存快照保存为文件发送给从机, 这一过程需要确保主机有足够多的空余内存。若快照文件较大, 对集群的服务能力会产生较大的影响, 而且复制过程是在从机新加入集群或者从机和主机网络断开重连时都会进行, 也就是网络波动都会造成主机和从机间的一次全量的数据复制, 这对实际的系统运营造成了不小的麻烦。
6.4. Redis较难支持在线扩容, 在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题, 运维人员在系统上线时必须确保有足够的空间, 这对资源造成了很大的浪费。