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 ...
随机推荐
- 了解什么是WebLogic Server 多数据源(Multi-DataSource)
1. 什么是多数据源 我们知道配置WebLogic Server集群时一定要配置一个单一接入点(例如:Apache或F5),这样客户端只要访问这个单一入口点就可以了.对于客户来说,就好象访问一台服 ...
- MVC4 Task.Factory.StartNew 异步调用
MVC4也添加了一些异步的东西,不过一枝都没有研究过. 工作上遇到了发出一个调用,但是不去管调用结果如何的情况,在谢平师傅的指导下, 写成如下异步方式 Task.Factory.StartNew(() ...
- centos7的时间同步机制:chrony使用
配置时间同步方法如下: 1.安装chrony时间同步服务(系统默认安装) #yum install chrony 可以先查询一下是否有安装: [root@localhost etc]# rpm -qa ...
- hduoj1285确定比赛名次
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- 关于IIS的IUSER和IWAM帐户
IUSER是Internet 来宾帐户匿名访问 Internet 信息服务的内置帐户 IWAM是启动 IIS 进程帐户用于启动进程外的应用程序的 Internet 信息服务的内置帐户 (在白吃点就是启 ...
- libev和libuv的区别
libuv 和 libev ,两个名字相当相近的 I/O Library,最近有幸用两个 Library 都写了一些东西,下面就来说一说我本人对两者共同与不同点的主观表述. 高性能网络编程这个话题已经 ...
- grep 精确匹配
使用grep实现精确过滤的五种方法 (1)当被过滤的内容占据一行时 [root@MySQL scripts]# cat oldboy.log 200 0200 2000 [root@My ...
- vue2.X computed 计算属性
需求:数据msg值为12345,我们现在需要反向显示成54321. 1.在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <! ...
- codeforces 486C Palindrome Transformation 贪心求构造回文
点击打开链接 C. Palindrome Transformation time limit per test 1 second memory limit per test 256 megabytes ...
- 高仿阴阳师官网轮播图效果的jQuery插件
代码地址如下:http://www.demodashi.com/demo/12302.html 插件介绍 这是一个根据阴阳师官网的轮播效果所扒下来的轮播插件,主要应用于定制个性化场景,目前源码完全公开 ...