redis持久化+集群简解

1.持久化

1、为什么要持久化

持久化的目的是当Redis宕机后数据不会丢失,其主要实现原理是把内存中的数据持久化到磁盘中,这个过程就是持久化。

2、持久化的两种方式

持久化有两种方式,实现方式也有所不同。分别是RDB,AOF。

1)RDB
RDB的实现原理是以快照的方式进行持久化。 在一定时间间隔内进行快照。把数据进行保存到磁盘。触发RDB的方式有三种:save命令、bgsave命令、配置redis配置文件。

redis持久化+集群简解_第1张图片

redis持久化+集群简解_第2张图片

可以把dump.rdb放入到redis启动目录下。 当redis再次被启动时则会加载该数据。

redis持久化+集群简解_第3张图片

save和bgsave 都是触发的命令但是他们的 方式不一样save是同步在生成rdb文件时其他操作需要等待,bgsave是异步当时不影响其他操作进行。如果rdb文件太大会影客户端的体验。

配置文件redis.conf(命令默认是bgsave)

redis持久化+集群简解_第4张图片

2)AOP提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录

AOF默认是没有开启。需要配置手动开启。

redis持久化+集群简解_第5张图片

redis持久化+集群简解_第6张图片

redis持久化+集群简解_第7张图片

重新打开文件存在

redis持久化+集群简解_第8张图片

(1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒
钟的数据。
(2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。
(3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写

(4)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大.
(5) 恢复数据时时间要比快照模式慢很多。

2.集群

搭建集群的目的是为了分担单个redis的压力

1)搭建

在不同的服务器上启动redis,对于从服务区执行slaveof ip port 命令分配主机

redis持久化+集群简解_第9张图片

在主机上查看输入info replication命令

redis持久化+集群简解_第10张图片

主机能插入和查看,从机只能查看

redis持久化+集群简解_第11张图片

从机

redis持久化+集群简解_第12张图片

这样有一个弊端,如果主机宕机将不能存储,于是引入了哨兵。哨兵是用来监听主机,如果主机宕机会进行分配。启动哨兵的文件是sentinel.conf,我们进行查看 

redis持久化+集群简解_第13张图片

让主机宕机 哨兵检测主机已经宕机

redis持久化+集群简解_第14张图片

redis持久化+集群简解_第15张图片

redis持久化+集群简解_第16张图片

3)去中心化哨兵都没有解决写并发量高的情况所以设置一种新的模式,通过HASH算法匹配不同的节点

redis持久化+集群简解_第17张图片

redis-cli --cluster create --cluster-replicas 1 192.168.5.4:7000 192.168.5.4:8000 192.168.5.4:9000 192.168.5.4:7001 192.168.5.4:8001 192.168.5.4:9001

redis持久化+集群简解_第18张图片

客户端访问:

redis-cli -c -h 127.0.0.1 -p 7000
 

不同的key分配不同的节点

redis持久化+集群简解_第19张图片

redis持久化+集群简解_第20张图片

你可能感兴趣的:(redis持久化+集群简解)