redis 持久化和主从配置

持久化

redis有两种持久化方式
1.rdb(默认的)
2.aof

rdb实现机制:
当redis做持久化时,redis会fork一个子进程;子进程将数据写到临时的RDB文件中;当子进程完成后,将原来的RDB文件替换,这种方式的最大的好处就是可以copy-on-write.也就是当正在写入的时候做复制操作。但是也有一个缺点,会有一定的数据丢失。

rdb实现配置:

1.save 保存操作的时间节点
save 900 1
save 300 10
save 60 10000

2.The filename where to dump the DB
dbfilename dump.rdb

3.Note that you must specify a directoryhere, not a file name.
dir ./

aof实现机制:
Redis的AOF持久化策略是将发送到Redis服务端的每一条命令都记录下来,并且保存到硬盘中的AOF文件中,类似打日志文件,来一条命令就记录一条。

aof配置:

1.appendonly 修改为yes
2.appendfsync 配置放开三个中的其中一个

aof重写策略:
重写策略的参数设置:
auto-aof-rewrite-percentage 100
当前的AOF文件大小超过上一次重写时的AOF文件大小的百分之多少时,会再次进行重写,如果之前没有重写过,则以启动时的AOF文件大小为依据。
auto-aof-rewrite-min-size 64mb
限制了允许重写的最小AOF文件大小,通常在AOF文件很小的时候,即使其中有些冗余的命令也是可以忽略的。

RDB 优点

RDB 是一种表示某个即时点的 Redis 数据的紧凑文件。RDB 文件适合用于备份。例如,你可能想要每小时归档最近 24 小时的 RDB 文件,每天保存近 30 天的 RDB 快照。这允许你很容易的恢复不同版本的数据集以容灾。
RDB 非常适合于灾难恢复,作为一个紧凑的单一文件,可以被传输到远程的数据中心,或者是 Amazon S3(可能得加密)。
RDB 最大化了 Redis 的性能,因为 Redis 父进程持久化时唯一需要做的是启动(fork)一个子进程,由子进程完成所有剩余工作。父进程实例不需要执行像磁盘 IO 这样的操作。

RDB 缺点

当你需要在 Redis 停止工作(例如停电)时最小化数据丢失,RDB 可能不太好。你可以配置不同的保存点。然而,你通常每隔 5 分钟或更久创建一个 RDB 快照,所以一旦 Redis 因为任何原因没有正确关闭而停止工作,你就得做好最近几分钟数据丢失的准备了。
RDB 需要经常调用 fork()子进程来持久化到磁盘。如果数据集很大的话,fork()比较耗时,结果就是,当数据集非常大并且 CPU 性能不够强大的话,Redis 会停止服务客户端几毫秒甚至一秒。AOF 也需要 fork(),但是你可以调整多久频率重写日志而不会有损(trade-off)持久性(durability)。
RDB 在重启保存了大数据集的实例时比 AOF 要快。

AOF 优点

使用 AOF Redis 会更具有可持久性(durable):你可以有很多不同的 fsync 策略:没有 fsync,每秒 fsync,每次请求时 fsync。使用默认的每秒 fsync 策略,写性能也仍然很不错(fsync 是由后台线程完成的,主线程继续努力地执行写请求),即便你也就仅仅只损失一秒钟的写数据。
AOF 日志是一个追加文件,所以不需要定位,在断电时也没有损坏问题。即使由于某种原因文件末尾是一个写到一半的命令(磁盘满或者其他原因),redis-check-aof 工具也可以很轻易的修复。
AOF 文件里面包含一个接一个的操作,以易于理解和解析的格式存储。你也可以轻易的导出一个 AOF 文件。例如,即使你不小心错误地使用 FLUSHALL 命令清空一切,如果此时并没有执行重写,你仍然可以保存你的数据集,你只要停止服务器,删除最后一条命令,然后重启 Redis 就可以。

AOF 缺点

对同样的数据集,AOF 文件通常要大于等价的 RDB 文件。
AOF 可能比 RDB 慢,这取决于准确的 fsync 策略。通常 fsync 设置为每秒一次的话性能仍然很高,如果关闭 fsync,即使在很高的负载下也和 RDB 一样的快。不过,即使在很大的写负载情况下,RDB 还是能提供能好的最大延迟保证。

主从

第1步:cp reids.conf redis2.conf
第2步:Vim redis2.conf(slave)
第3步:slaveof 192.168.0.12 6379(master的地址)
注意:如果master配置了密码,则slave需要配置 masterauth
第4步:Vim redis.conf (master)
第5步:bind 0.0.0.0 #无ip 都可以访问
第6步:./redis-server ../redis.conf #master
第7步./redis-server ../redis.2conf #slave
Ps:是否成功set get请求来判断或执行info命令role
判断是否成功:
1、master客户端set值,slave客户端能不能获取到
2、config get ‘slaveof*’

集群

>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值