主从特性:
一个master可以有多个slave
一个slave只能有一个master
数据流是单向的,master到slave
主从复制底层依赖于RDB方式进行全量复制
准备环境:
VM虚拟机16
redis-4.0.11
提前准备启动的redis1.conf 端口号为6380 密码123
RDB配置
进入cd /usr/local/redis/redis-4.0.11/
输入vim redisl.conf 进入如下:
根据RDB配置项进行配置
save:60 1
自动保存策略,60秒内有一个key发生变化就自动保存
dbfilename dbdump:rdb
rdb文件名
dir ./
rdb文件保存目录
stop-writes-on-bgsave-error yes
发生错误中断写入,建议开启
rdbcompression yes
数据文件压缩,建议开启
rdbchecksum yes
开启crc64错误校验.建议开启
wq!保存退出
./src/redis-server redis1.conf启动
出现如下:
./src/redis-cli -p 6380 -a 123 进入客户端
添加数据
mset aa aa bb bb cc cc dd dd ee ee java java
再exit ll查看目录 没有dbdump.rdb 就save强制一下 再exit ll
cat dbdump.rdb 查看文件添加数据已经存在
不用每一次都save,再进行一次添加测试,直接存在
就算此时删除掉rdb文件,只要没停服务,数据就有
如果停了服务删除,数据就不存在了
这就是RDB的持久化策略
RDB 和 AOF 是 Redis 内部的两种数据持久化策略,这是两种不同的持久化策略,一种是基于内存快照,一种是基于操作日志
rdb文件没有出来两种方式解决:
- save bgsave
- 停一下服务
RDB相对于AOP加载性能效率是比较慢的
为什么AOF效率比RDB效率高?
- 因为AOF有覆写机制
AOF的重写机制
会对相同的数据进行去重只留最后一次的相同的数据完成对文件的优化
AOF只有追加没有覆盖或复写
AOF默认关闭状态,想要使用就要先开启
写日志
- AOF方式,redis想添加数据,会直接把添加数据写入
AOF三种追加策略:
- always - 随时写入(不推荐)
everysec - 每秒写入(推荐)
no - 依赖os规则写入(不推荐)
AOF配置
接着进到vim redis1,conf
再./src/redis-server redis1.conf
ll查看目录
再进去添加数据
vim aof-6666.aof 数据存在
主从复制
单机版伪集群
能不能在一台redis上搭建集群?可以
你有多少个配置文件就能起多少个服务
我们可能有多台服务器有master和slave
- Master相当于数据源称为主slave相当于数据同步的称为从
从机宕机没什么影响,主机宕机,写不进去
删除之前创建的文件夹
重新解压
tar -zxvf redis-4.0.11.tar.gz
复制一份7777 6666 删除原来的4.0.11
分别对两台机子安装
vim redis-7777.conf
进去配置下面
daemonize yes
port 7777
logfile ./redis-7777.log
dir ./
bind 0.0.0.0
vim redis-6666.conf
开启
./src/redis-server redis-6666.conf
开启6666后另起一个窗口
./src/redis-server redis-7777.conf
然后进客户端
在主机和从机分别添加数据
当从机跟主机建立关系时,从机内容会被清掉,从主机拷贝
主机
从机
主从复制实现方式
slaveof / slaveof no one 命令
yyzz 已经变成aabb
输入info可以查看很多信息
集群 内存 cup 状态
都变成master了