redis的集群应该解决3各问题:
高存储,高并发,高可用!!
-
redis的集群模式有3种
- 主从复制
- 哨兵模式
- cluster模式
-
各集群模式的特点
-
主从复制
一个mater几点带N各从节点,从主节点写入,从节点读取。当主节点挂掉时,集群将不再提供写服务。
必须手动重启主节点或重新配置主从复制集群才能重新生效。同时,集群的存储容量是固定的,不能通过增加节点来增加存储容量。
该模式可以通过读写分离,解决高并发的问题,但不能解决高可用和高存储的问题。
-
哨兵模式
哨兵模式的出现就是为了解决主从复制高可用问题。当主节点挂了后,哨兵可以推选出一个新的主节点,让集群继续提供读和写的服务。
该模式解决了高可用和高并发的问题,但是没有解决高存储的问题。
-
cluster模式
该模式是一个去中心化的集群模式。集群中有多个master节点,不同的key被分派存储在不同的master节点中。并且多个主节点提供高并发的请求服务。如果master节点挂掉后,集群可以推选该节点的从节点成为新的master节点。可以通过增加节点来增加存储容量和高并发请求。
该节点解决了高存储,高并发,高可用3个问题!! 但是当一个master和它的从节点都挂掉时,集群将不再提供服务。
-
Redis作为缓存时和数据库的操作顺序说明
缓存和数据库的数据应该保持一致性。简单来说就是,缓存中有的数据,数据库中一定要有。数据库中有的数据,缓存中不一定会有。在读取该数据时再写入缓存中。
-
当写入或修改一个key时
应该先写入数据库,再写入缓存。
说明如下:
1. 当写入数据库失败时,整个操作失败,不必再写入缓存 2. 当写入数据库成功时,缓存写入成功或失败,都可以判断本次写入操作成功!如果缓存写入失败,在下次获取时可以从数据库中读取。 3. 如果先写缓存,就会出现缓存写入成功,数据库写入失败的情况。这时候数据就不一致了。
-
当删除一个key时
应该先删除缓存,再删除数据库
说明如下:
1. 当删除缓存失败时,整个操作失败,不必再删除数据库 2. 当缓存删除成功,数据库删除失败,该操作失败。数据库中还保留有数据,下次读取时会从数据库重新设置一份到缓存中,这时的数据还是一致的。 3. 如果先删数据库,就会出现数据库删除成功,缓存删除失败的情况,这时数据就不一致了。