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的更多相关文章

  1. Redis(五)--- Redis的持久化RDB与AOF

    一.Redis数据库 我们都知道Redis是基于内存的数据库,数据是以key-value键值对的方式存储的,那么key-value键值对是随意放在内存中的么,其实Redis的服务会创建很多的数据库空间 ...

  2. redis之持久化RDB与AOF

    redis数据持久化 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. RDB持 ...

  3. Redis的持久化——RDB和AOF

    推荐阅读 Redis 持久化之RDB和AOF --来自ITDragon龙 Redis Persistence --来自Redis官网文档

  4. redis的持久化 rdb和aof

    1.rdb(Redis DataBase) 当满足条件时,redis单独会fork(创建)一个新的线程,会先将内存中的数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次已经持久化 ...

  5. Redis之持久化(RDB AOF)

    Redis 提供了 RDB 和 AOF 两种持久化方案: RDB:生成指定时间间隔内的 Redis 内存中数据快照,是一个二进制文件 dumpr.rdb AOF:记录 Redis 除了查询以外的所有写 ...

  6. 配置方案:Redis持久化RDB和AOF

    Redis持久化方案 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘.当下次Redis重启时,利 ...

  7. Redis之数据持久化RDB与AOF

    Redis之数据持久化RDB与AOF https://www.cnblogs.com/zackku/p/10087701.html 大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内 ...

  8. redis的持久化(RDB&AOF的区别)

    RDB 是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程来进行持久化,会 ...

  9. Linux - redis持久化RDB与AOF

    目录 Linux - redis持久化RDB与AOF RDB持久化 redis持久化之AOF redis不重启,切换RDB备份到AOF备份 确保redis版本在2.2以上 实验环境准备 备份这个rdb ...

随机推荐

  1. EasyMvc入门教程-基本控件说明(13)选项卡导航

    选项卡Tab导航主要用于企业页面显示不同子类或者子页面的信息内容. 先来一个基本的使用例子:代码如下: @{ var data = new List<TabItem>() { new Ta ...

  2. C#面试基础知识2

    1.C#三层架构 C#三层架构急表示层(UI,User Interface),业务逻辑层(BLL BusinessLogicLayer),数据访问层(DAL Data Access Layer).三层 ...

  3. OpenSceneGraph 3.2 版本修改点

    OpenSceneGraph-3.2.0稳定版本发布了,改善了对iOS.Android的支持,支持OpenGL的更多新特性.可以通过 下载版块来进行下载. OpenSceneGraph 3.2 发布. ...

  4. 2017.2.7 开涛shiro教程-第六章-Realm及相关对象(一)

    原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第六章 Realm及相关对象 1.用户.角色.权限的关系 用户和角 ...

  5. 2016.6.20 在Eclipse配置Tomcat服务器的步骤

    好久没接触,又忘记了如何在eclipse中配置tomcat. (1)打开eclispe的preference (2)找到Server下方的Runtime Environment,单击右方的Add按钮. ...

  6. 成功者的特点 VS 失败者的特点

  7. java查看工具jstack-windows

    Prints Java thread stack traces for a Java process, core file, or remote debug server. This command ...

  8. 【Excle数据透视表】如何移动数据透视表的位置

    数据透视表创建完成了,现在需要将它移动到D5位置,如何移动呢? 解决办法 通过"移动数据透视表"功能实现数据透视表的位置移动 步骤1 单击数据透视表任意单元格→数据透视表工具→分析 ...

  9. HTTP基础(整理)

    前一段时间看了有关这个协议的相关文档,对这个协议有了新的理解,这里整理一下. http是应用层面向对象的协议. 它有以下几个特点: 1.  支持客户服务器模式(这是废话,不支持这个模式怎么工作) 2. ...

  10. BFC简析

    一.BOX模型 box是CSS中布局的基本单位,而不同类型的box,会参与不同的Formatting Context(一个决定如何渲染文档的容器),box内的元素会以不同的方式渲染. block-le ...