当前位置: 代码网 > it编程>数据库>Redis > Redis的持久化方式

Redis的持久化方式

2024年10月24日 Redis 我要评论
一、概述redis提供了不同的持久性选项:rdb持久性按指定的时间间隔执行数据集的时间点快照。aof持久性会记录服务器接收的每个写入操作,这些操作将在服务器启动时再次播放,以重建原始数据集。使用与re

一、概述

redis提供了不同的持久性选项:

rdb持久性按指定的时间间隔执行数据集的时间点快照。

aof持久性会记录服务器接收的每个写入操作,这些操作将在服务器启动时再次播放,以重建原始数据集。使用与redis协议本身相同的格式记录命令,并且仅采用追加方式。当日志太大时,redis可以在后台重写日志。

如果您希望,只要您的数据在服务器运行时就一直存在,则可以完全禁用持久性。

可以在同一实例中同时合并aof和rdb。请注意,在这种情况下,redis重新启动时,aof文件将用于重建原始数据集,因为它可以保证是最完整的。

redis提供了不同的持久性方式,即为rdb和aof两种持久化方式,rdb持久化是指,在指定的时间间隔内将内存中的数据集写入到磁盘中,这个时间间隔可以在配置文件中手动配置,而aof持久化则记录的时每个写入的操作而不是数据集,在恢复数据时,在服务器启动时再一次执行写入操作,重新建立数据,为了避免aof文件会越来越大,aof采用文件追加的方式,当aof的大小超过所设定的阈值时,redis会启动aof的内容压缩,只保留可以恢复数据的最小指令集。

在redis中同时开启aof和rdb两种持久化方式,redis默认优先取aof的数据。

二、redis持久化–rdb

1、rdb的保存文件和保存路径

在redis的redis.conf可以指定rdb保存文件名字,文件名以.rdb结尾,如下图dump.rdb。可以在redis.conf中指定,rdb文件的保存路径,如下图rdb文件将会保存在/opt/myredis/redis_dbfile/目录下

2、rdb的保存策略

  • 保存策略一

自动备份规则(满足以下三种条件其中之一则生成rdb文件)

save 900 1		 #900秒内完成1次对数据的改变
save 300 10		 #300秒内完成1次对数据的改变
save 60 10000    #一分钟内完成1次对数据的改变	
  • 保存策略二

正常关闭redis触发持久化,如使用shutdown命令关闭redis(shutdown),如下图:

3、rdb持久相关配置(在redis.conf配置文件中)

stop-writes-on-bgsave-error yes 后台存储存储发生错误时禁止写入

  • 默认为yesrdbcompression yes 启动rdb文件压缩,耗费cpu资源
  • 默认为yesrdbchecksum yes 对rdb数据进行校验,耗费cpu资源
  • 默认为yesdbfilename dump.rdb rdb文件名称dir ./ rdb文件保存目录

4、rdb的备份与恢复

rdb的备份

先通过config get dir 查询到rdb文件的目录,然后再将*.rdb文件拷贝到别的地方,简单来说就是找到你需要备份的rdb文件,然后拷贝就完成了rdb的备份

rdb的恢复

  • a.关闭redis
  • b.把rdb文件放到redis的工作目录下
  • c.启动redis,备份的数据就会直接加载

5、rdb的优缺点

优点:

节省磁盘空间恢复数据速度快

缺点:

虽然redis在持久化创建一个子线程进行持久化,并且使用了“写时复制”技术,但是如果数据足够庞大还是比较消耗性能的。

在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改

三、redis持久化–aof

1、aof的保存文件和保存路径

aof默认是不开启的,需要在配置文件中手动配置,如下图在redis.conf中将appendonly设置为yes表示开启aof持久化,appendfilename参数表示aof保存文件,aof文件保存路径和rdb文件保存路径一致,即设置dir参数

2、aof的保存策略

在配置文件中设置aof保存策略,当appendfsync属性设置为always表示每次redis的写入都会被记入日志;

everysec表示每秒记入日志一次,如果宕机,本秒的数据可能丢失;

no表示不主动记入

3、aof的重写机制

aof是通过记录redis的写入命令来实现持久化的,在恢复数据时,在服务器启动时再一次执行写入操作,重新建立数据,所以问题就诞生了,aof文件的大小随着时间的流逝一定会越来越大,大大影响了redis服务器的性能,避免出现此种情况,aof新增了重写机制,当aof文件的大小超过所设定的阈值时,redis就会启动aof文件的内容压缩,只保留可以恢复数据的最小指令集.如下图实例,aof用一条rpush list “b” “d” “e” “f” “g” “a” "b"代替前面的5条命令。

4、aof的备份与恢复

aof的备份和恢复和rdb的备份和恢复操作一致,都是拷贝备份文件,需要恢复时将备份文件放到redis的工作目录下,启动系统即加载数据。

注意:当aof和rdb同时开启时,系统默认取aof的数据。

5、aof的优缺点

优点:

备份机制更健壮,丢失数据的概率更低可读的持久化日志文本,通过操作aof稳健,可以处理误操作

缺点:

比起rdb占用更多的磁盘空间恢复数据比rdb慢每次读写都写入aof的话,有一定的性能压力存在个别bug,造成恢复不能

四、两种持久化方式如何选型

1、官方推荐两个都使用

2、如果对数据不敏感,可以选单独用rdb

3、不建议单独使用aof,因为会出现个别bug

4、如果只是做纯内存缓存,可以都不用

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

  • Redis中Zset类型常用命令的实现

    一. zset有序集合简介.定义: zset(有序集合)是redis中的一种数据类型,它保留了集合不能有重复成员的特点,但与普通集合不同的是,zset中的每个元素都与一个唯一的浮点…

    2024年10月17日 数据库
  • Redis中pipeline(管道)的实现示例

    举个例子: 小卖铺免费让你拿50瓶饮料,你是一次拿一瓶拿回家,还是打包一次或者多次拿回家?概念redis管道(pipelining)是一种在客户端向服务端发送多个请求而不等待响应的…

    2024年10月14日 数据库
  • Redis实现接口防抖的示例代码

    说明:实际开发中,我们在前端页面上点击了一个按钮,访问了一个接口,这时因为网络波动或者其他原因,页面上没有反应,用户可能会在短时间内再次点击一次或者用户以为没有点到,很快的又点了一…

    2024年10月14日 数据库
  • Redis实现分布式事务的示例

    Redis实现分布式事务的示例

    redis 本身并不是一个关系型数据库,它并不支持传统的 sql 数据库中的 acid 特性的事务。然而,redis 提供了一种称为“事务&rdqu... [阅读全文]
  • Centos7安装redis的超详细步骤教程

    查看当前 redis 版本:当前的 redis 版本太老了,选择安装 redis5。一、使用yum 安装1、首先安装 scl 源yum install centos-release…

    2024年10月31日 数据库
  • k8s部署redis远程连接的项目实践

    一、环境节点ip服务master192.168.126.46docker、kubeadm、kubelet、kubectl、flannel、telnetnode1192.168.12…

    2024年10月31日 数据库

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com