1. Redis 简介
Redis 是一个 key-value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set —有序集合) 和 hash(哈希类型)。
这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
在此基础上,redis 支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在内存中。
区别的是 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave(主从) 同步。
Redis 是一个高性能的 key-value 数据库。
redis 的出现,很大程度补偿了 memcached 这类 key/value 存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。
它提供了 Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang 等客户端,使用很方便。
Redis 集群是一个提供在多个 Redis 间节点间共享数据的程序集。
Redis 集群并不支持处理多个 keys 的命令 , 因为这需要在不同的节点间移动数据 , 从而达不到像 Redis 那样的性能 , 在高负载的情况下可能会导致不可预料的错误。
Redis 集群通过分区来提供一定程度的可用性 , 在实际环境中当某个节点宕机或者不可达的情况下继续处理命令,Redis 集群的优势:
3.1 主从复制的简单流程介绍:
3.2 主从复制简单原理的过程
(1)slave 与 Master 建立连接,发送 sync 同步命令;
也就是说当用户在 Master 写入一条命令后,他们之间会通过一些算法把数据同步到每一个 slave 上;
(2)Msater 会开启一个后台进程,将数据库快照保存到文件中。同时 Master 主进程会开始收集新的写命令并缓存;
(3)后台完成保存后,就将文件发送给 slave;
(4)slave 将此文件保存在硬盘上。
4.1 Sentinel 工作方式
若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除。