1.持久化
1、为什么要持久化
持久化的目的是当Redis宕机后数据不会丢失,其主要实现原理是把内存中的数据持久化到磁盘中,这个过程就是持久化。
2、持久化的两种方式
持久化有两种方式,实现方式也有所不同。分别是RDB,AOF。
1)RDB
RDB的实现原理是以快照的方式进行持久化。 在一定时间间隔内进行快照。把数据进行保存到磁盘。触发RDB的方式有三种:save命令、bgsave命令、配置redis配置文件。
可以把dump.rdb放入到redis启动目录下。 当redis再次被启动时则会加载该数据。
save和bgsave 都是触发的命令但是他们的 方式不一样save是同步在生成rdb文件时其他操作需要等待,bgsave是异步当时不影响其他操作进行。如果rdb文件太大会影客户端的体验。
配置文件redis.conf(命令默认是bgsave)
2)AOP提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录
AOF默认是没有开启。需要配置手动开启。
重新打开文件存在
(1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒
钟的数据。
(2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。
(3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写
(4)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大.
(5) 恢复数据时时间要比快照模式慢很多。
2.集群
搭建集群的目的是为了分担单个redis的压力
1)搭建
在不同的服务器上启动redis,对于从服务区执行slaveof ip port 命令分配主机
在主机上查看输入info replication命令
主机能插入和查看,从机只能查看
从机
这样有一个弊端,如果主机宕机将不能存储,于是引入了哨兵。哨兵是用来监听主机,如果主机宕机会进行分配。启动哨兵的文件是sentinel.conf,我们进行查看
让主机宕机 哨兵检测主机已经宕机
3)去中心化哨兵都没有解决写并发量高的情况所以设置一种新的模式,通过HASH算法匹配不同的节点
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-cli -c -h 127.0.0.1 -p 7000
不同的key分配不同的节点