redis的持久化RDB与AOF
redis 持久化
Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。
RDB 持久化
redis提供了RDB持久化的功能,这个功能可以将redis在内存中的的状态保存到硬盘中,它可以手动执行。
也可以再redis.conf中配置,定期执行。
RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。
RDB(持久化)
内存数据保存到磁盘
在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)
优点:速度快,适合做备份,主从复制就是基于RDB持久化功能实现
rdb通过再redis中使用save命令触发 rdb rdb配置参数: dir /data/6379/
dbfilename dbmp.rdb 每过900秒 有1个操作就进行持久化 save 900秒 1个修改类的操作
save 300秒 10个操作
save 60秒 10000个操作 save 900 1
save 300 10
save 60 10000
实验
1. 启动redis服务端,准备配置文件
redis.conf 写入(也可以在新建个文件--s15redis.conf写入)
port 6379
daemonize yes #后台运行
logfile /data/6379/redis.log # 日志文件存放的绝对路径
dir /data/6379 # redis的数据文件放的地方
dbfilename s15.rdb # 开启rdb功能,s15是自己定义
save 900 1 #rdb机制 每900秒 有1个修>改记录
save 300 10 #每300秒 10个修改
记录
save 60 10000 #每60秒内 10000修>改记录
2. 启动redis,测试RDB功能
[root@localhost redis-4.0.10]# redis-server redis.conf
[root@localhost redis-4.0.10]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name "tom"
OK
127.0.0.1:6379> save # 通过是 save 触发持久化,使数据写入RDB文件
OK
127.0.0.1:6379>
[root@localhost redis-4.0.10]# ps -ef | grep redis
root 4457 1 0 19:13 ? 00:00:00 redis-server *:6379
root 4464 3349 0 19:14 pts/0 00:00:00 grep --color=auto redis
[root@localhost redis-4.0.10]# kill 4457
[root@localhost redis-4.0.10]# redis-server redis.conf
[root@localhost redis-4.0.10]# redis-cli
127.0.0.1:6379> keys *
1) "name"
2) "age"
127.0.0.1:6379>
AOF 持久化
AOF(append-only log file)
记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集
AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。
优点:最大程序保证数据不丢
缺点:日志记录非常大
redis-client 写入数据 -> redis-server 同步命令 -> AOF文件
配置参数
AOF持久化配置,两条参数 appendonly yes
appendfsync always 总是修改类的操作
everysec 每秒做一次持久化
no 依赖于系统自带的缓存大小机制
实验
1. 准备 aof 配置文件
# redis.conf
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename dbmp.rdb
requirepass redhat
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync everysec
2. 启动redis服务
[root@localhost redis-4.0.10]# redis-server redis.conf
3. 登录 redis-cli
[root@localhost redis-4.0.10]# redis-cli
4. 设置 keys * ,关闭redis,检查数据是否持久化 (同 RDB)
总结
rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能
aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog
redis不重启,切换RDB备份到AOF备份
注意 : 确保redis的版本在 2.2 以上.本文在redis4.0中,通过 config set 命令,从而达到目的.
实验
1. redis.conf 服务端的配置文件
注明: 这是在 RDB持久化模式下
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename dbmp.rdb
save 900 1 #rdb机制 每900秒 有1个修改记录
save 300 10 #每300秒 10个修改记录
save 60 10000 #每60秒内 10000修改记录
2. 启动redis服务端
[root@localhost redis-4.0.10]#redis-server redis.conf
3. 登录 redis-cli
[root@localhost redis-4.0.10]# redis-cli
4. 通过命令,激活AOF持久化
127.0.0.1:6379> CONFIG set appendonly yes #用命令激活aof持久化(临时生效,注意写入到配置文件)
OK
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> CONFIG SET save "" #关闭rdb持久化
5. 将AOF操作,写入配置文件中,永久生效
[root@localhost redis-4.0.10]#vim redis.conf :
port 6379
daemonize yes
logfile /data/6379/redis.log
dir /data/6379
#dbfilename s15.rdb
#save 900 1
#save 300 10
#save 60 10000
appendonly yes
appendfsync everysec
6. 测试AOF数据持久化,杀死redis进程,重新启动
[root@localhost redis-4.0.10]# vim redis.conf #写入AOF操作到配置文件
[root@localhost redis-4.0.10]# redis-cli
127.0.0.1:6379> keys*
(error) ERR unknown command 'keys*'
127.0.0.1:6379> keys *
1) "age"
2) "name"
127.0.0.1:6379> set addr jjjj
OK
127.0.0.1:6379> keys *
1) "age"
2) "addr"
3) "name"
127.0.0.1:6379>
[root@localhost redis-4.0.10]# ps -ef | grep redis
root 4622 1 0 20:01 ? 00:00:02 redis-server *:6379
root 4684 3349 0 20:19 pts/0 00:00:00 grep --color=auto redis
[root@localhost redis-4.0.10]# kill 4622
[root@localhost redis-4.0.10]# redis-server redis.conf
[root@localhost redis-4.0.10]# redis-cli
127.0.0.1:6379> keys *
1) "addr"
2) "name"
3) "age"
127.0.0.1:6379>
现在,所有的数据就都保存到了AOF文件中.
我们可以坚持RDB或者AOF文件
[root@localhost ~]# cd /data
[root@localhost data]# ls
6379 AllMysql.dump
[root@localhost data]# ls 6379
appendonly.aof redis.log s15.rdb # 有s15.rdb 说明是有RDB备份
# 有appendonly.aof 说明是有 AOF备份
redis的持久化RDB与AOF的更多相关文章
- Redis(五)--- Redis的持久化RDB与AOF
一.Redis数据库 我们都知道Redis是基于内存的数据库,数据是以key-value键值对的方式存储的,那么key-value键值对是随意放在内存中的么,其实Redis的服务会创建很多的数据库空间 ...
- redis之持久化RDB与AOF
redis数据持久化 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. RDB持 ...
- Redis的持久化——RDB和AOF
推荐阅读 Redis 持久化之RDB和AOF --来自ITDragon龙 Redis Persistence --来自Redis官网文档
- redis的持久化 rdb和aof
1.rdb(Redis DataBase) 当满足条件时,redis单独会fork(创建)一个新的线程,会先将内存中的数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次已经持久化 ...
- Redis之持久化(RDB AOF)
Redis 提供了 RDB 和 AOF 两种持久化方案: RDB:生成指定时间间隔内的 Redis 内存中数据快照,是一个二进制文件 dumpr.rdb AOF:记录 Redis 除了查询以外的所有写 ...
- 配置方案:Redis持久化RDB和AOF
Redis持久化方案 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘.当下次Redis重启时,利 ...
- Redis之数据持久化RDB与AOF
Redis之数据持久化RDB与AOF https://www.cnblogs.com/zackku/p/10087701.html 大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内 ...
- redis的持久化(RDB&AOF的区别)
RDB 是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程来进行持久化,会 ...
- Linux - redis持久化RDB与AOF
目录 Linux - redis持久化RDB与AOF RDB持久化 redis持久化之AOF redis不重启,切换RDB备份到AOF备份 确保redis版本在2.2以上 实验环境准备 备份这个rdb ...
随机推荐
- 让arclist标签也支持currentstyle属性 完美解决
1.查找到: $channelid = $ctag->GetAtt('channelid'); 在下面插入:$currentstyle = $ctag->GetAtt('currentst ...
- MATLAB矩阵基础运算
1.矩阵的加减运算X+Y或者X-Y:元素对应相加减.在此要求X与Y必须是同维矩阵,否则会出现错误信息.如果Y为一个数,则表示X中每一元素+Y或者-Y: %当X和Y都为同维矩阵时 X=[1,2,-3;2 ...
- xampp 安装 mysql-python
在已经安装brew前提下:brew install mysql-connector-c pip install MySQL-python
- C++ 关于类与对象在虚函数表上唯一性问题 浅析
[摘要] 非常多教材上都有介绍到虚指针.虚函数与虚函数表.有的说类对象共享一个虚函数表,有的说,一个类对象拥有一个虚函数表.还有的说,不管用户声明了多少个类对象,可是,这个VTABLE虚函数表仅仅有一 ...
- JavaScript中给二维数组动态添加元素的质朴方法
var myData = new Array(); for(var i=0;i<tableDatas.length;i++){ var arr=tableDatas[i]; ...... /// ...
- struts2类型转换+校验
1.action中validate()与validateXxx() 用于action执行前的校验,如果校验失败,跳到input视图, 前者校验整个Action: 后者校验该Action中的Xxx方法. ...
- axios 异步加载 导致 {{}} 中变量为 undefined 报错 的 解决方案
情景:axios 异步加载数据,当返回数据为一个 数组 时,双花括号中 这样写 会报错 {{informationDetail[0].img}} 解决方案一:通过 v-if 进行判断 解决方案二:单独 ...
- remove-duplicates-from-sorted-list I&II——去除链表中重复项
I.Given a sorted linked list, delete all duplicates such that each element appear only once. For exa ...
- docker创建私有仓库及存储image
Docker官方的Docker hub尽管提供了有非常多image,也基本上包括了我们须要使用的,可是其訪问起来比較慢.假设自己要定制image.多台server之间的共享使用此image非常不方便. ...
- jQuery与ajax的应用(一)
<body> <div id="resText"></div> <div id="reshtml"></d ...