3 Redis 基本内容
3.1 Redis 的数据类型
字符串
列表
集合
散列表
有序集合
3.2 Redis 集群的数据存储方式
3.2.1 单节点
3.2.2 主从模式(master/slaver)
a) 一个 Master 可以有多个 Slaves
b) 默认配置下,master 节点可以进行读和写,slave 节点只能进行读操作,写操作被禁止
c) 不要修改配置让 slave 节点支持写操作,没有意义,原因一,写入的数据不会被同步到其他节点;原因二,当 master 节点修改同一条数据后,slave 节点的数据会被覆盖掉
d) slave 节点挂了不影响其他 slave 节点的读和 master 节点的读和写,重新启动后会将数据从 master 节点同步过来
e) master 节点挂了以后,不影响 slave 节点的读,Redis 将不再提供写服务,master 节点启动后 Redis 将重新对外提供写服务。
f) master 节点挂了以后,不会 slave 节点重新选一个 master
对有密码的情况说明一下,当 master 节点设置密码时:
客户端访问 master 需要密码;启动 slave 需要密码,在配置中进行配置即可;客户端访问 slave 不需要密码
3.2.3 Sentinel 模式
sentinel 模式:
a) sentinel 模式是建立在主从模式的基础上,如果只有一个 Redis 节点,sentinel 就没有任何意义;
b) 当 master 节点挂了以后,sentinel 会在 slave 中选择一个做为 master,并修改它们的配置文件,其他 slave 的配置文件也会被修改,比如 slaveof 属性会指向新的 master;
c) 当 master 节点重新启动后,它将不再是 master 而是做为 slave 接收新的 master 节点的同步数据;
d) sentinel 因为也是一个进程有挂掉的可能,所以 sentinel 也会启动多个形成一个 sentinel 集群;
e) 当主从模式配置密码时,sentinel 也会同步将配置信息修改到配置文件中,不许要担心;
f) 一个 sentinel 或 sentinel 集群可以管理多个主从 Redis;
g) sentinel 最好不要和 Redis 部署在同一台机器,不然 Redis 的服务器挂了以后,sentinel 也挂了;
h) sentinel 监控的 Redis 集群都会定义一个 master 名字,这个名字代表 Redis 集群的 master Redis;
当使用 sentinel 模式的时候,客户端就不要直接连接 Redis,而是连接 sentinel 的 ip 和 port,由 sentinel 来提供具体的可提供服务的 Redis 实现,这样当 master 节点挂掉以后,sentinel 就会感知并将新的 master 节点提供给使用者。
sentinel 模式基本可以满足一般生产的需求,具备高可用性。但是当数据量过大到一台服务器存放不下的情况时,主从模式或 sentinel 模式就不能满足需求了,这个时候需要对存储的数据进行分片,将数据存储到多个 Redis 实例中。
3.2.4 Cluster 模式
cluster 的出现是为了解决单机 Redis 容量有限的问题,将 Redis 的数据根据一定的规则分配到多台机器。cluster:
cluster 可以说是 sentinel 和主从模式的结合体,通过 cluster 可以实现主从和 master 重选功能,所以如果配置两个副本三个分片的话,就需要六个 Redis 实例。
因为 Redis 的数据是根据一定规则分配到 cluster 的不同机器的,当数据量过大时,可以新增机器进行扩容
这种模式适合数据量巨大的缓存要求,当数据量不是很大使用 sentinel 即可。