作者:Grey

原文地址:Redis学习笔记六:持久化实验(AOF,RDB)

Redis几种持久化方案介绍和对比

AOF方式:https://blog.csdn.net/ctwctw/article/details/105173842

RDB方式:https://blog.csdn.net/ctwctw/article/details/105265689

对比:https://blog.csdn.net/ctwctw/article/details/105147277

准备工作

安装Redis,可以参考Redis学习笔记一:安装和配置

AOF实验

如果按照准备工作中的方法安装的redis,找到配置文件,默认在如下位置

vi /etc/redis/6379.conf

修改这两个配置

appendonly yes
appendfsync always
# appendfsync everysec
# appendfsync no

打开always选项,仅为了实验用,生产环境慎用,或者用everysec。

配置好以后,可以通过

service redis_6379 restart

重启redis

然后查看一下redis的data目录,默认在如下位置:

ls /var/lib/redis/6379

显示了aof文件

[root@db01 6379]# ls /var/lib/redis/6379
appendonly.aof

通过redis-cli连上redis,执行一些命令


[root@db01 6379]# redis-cli
127.0.0.1:6379> mset k1 a k2 b k3 c k4 d
OK
127.0.0.1:6379> set k5 e
OK
127.0.0.1:6379> mget k1 k2 k3 k4 k5
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"

模拟数据被摧毁操作,执行flushall

127.0.0.1:6379> flushall
OK

退出redis-cli客户端,查看aof文件内容

[root@db01 6379]# cat /var/lib/redis/6379/appendonly.aof
*2
$6
SELECT
$1
0
*9
$4
mset
$2
k1
$1
a
$2
k2
$1
b
$2
k3
$1
c
$2
k4
$1
d
*3
$3
set
$2
k5
$1
e
*1
$8
flushall

所有操作都被记录下来了,假设我们要恢复摧毁前的数据,我们可以这样操作,打开aof文件,并把最后一行的flushall操作删除, 然后执行

redis-cli  --pipe < /var/lib/redis/6379/appendonly.aof

重新连接redis,查看数据,全部恢复:

[root@db01 6379]# redis-cli
127.0.0.1:6379> mget k1 k2 k3 k4 k5
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"

RDB实验

将aof方式先停用

vi /etc/redis/6379.conf

将这个配置改为no

appendonly no

删掉遗留的aof文件

rm -rf /var/lib/redis/6379/appendonly.aof

进入redis-cli,并清库

flushall

然后删掉dump.rdb文件

rm -rf /var/lib/redis/6379/dump.rdb

经过如上操作,redis目前数据为空,且备份文件也为空,关闭了aof策略,现在开始修改redis的配置文件,配置rdb的策略

vi /etc/redis/6379.conf

配置如下信息

# 60秒之内,至少有5个key发生变化,就触发rdb
save 60 5 # 默认的rdb文件名为:dump.rdb
dbfilename dump.rdb # 默认rdb文件的位置
dir /var/lib/redis/6379

配置修改完毕

重启redis

重新连接redis-cli, 快速执行一些操作(一分钟之内至少set 5个key)

127.0.0.1:6379> set k1 a
OK
127.0.0.1:6379> set k2 b
OK
127.0.0.1:6379> set k3 c
OK
127.0.0.1:6379> set k4 5
OK
127.0.0.1:6379> set k5 dd
OK
127.0.0.1:6379> set k6 dasdfas
OK
127.0.0.1:6379> set k7 5sdfas

将生成的dump.rdb文件先重命名

 mv /var/lib/redis/6379/dump.rdb /var/lib/redis/6379/dump.rdb.backup

重新连接redis-cli。模拟摧毁数据操作

flushall

停掉redis

service redis_6379 stop

将备份的dump文件重新还原

 mv /var/lib/redis/6379/dump.rdb.backup /var/lib/redis/6379/dump.rdb

重新启动redis

service redis_6379 start

重新连接redis-cli,查看数据是否恢复

[root@db01 6379]# redis-cli
127.0.0.1:6379> keys *
1) "k1"
2) "k5"
3) "k2"
4) "k3"
5) "k6"
6) "k4"
7) "k7"
127.0.0.1:6379> mget k1 k2 k3 k4 k5 k6 k7
1) "a"
2) "b"
3) "c"
4) "5"
5) "dd"
6) "dasdfas"
7) "5sdfas"

如上,数据全部恢复。

Redis学习笔记六:持久化实验(AOF,RDB)的更多相关文章

  1. Redis学习笔记9--Redis持久化

    redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化.redis支持四种持久化方式,一是 Snapshotting(快照)也是默认方式:二是Appen ...

  2. Redis学习笔记(一)-持久化

    一.RDB持久方式 RDB持久化是把当前进程的数据已快照的形式保存到硬盘的过程. 触发方式: 1.手动触发命令:save和bgsave save:阻塞式,内存较大的实例在执行过程中会造成长时间的阻塞, ...

  3. Redis学习笔记(九) AOF持久化

    除了RDB持久化功能之外,Redis还提供了AOF持久化功能.与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的. 服务 ...

  4. Redis学习笔记六:独立功能之 Lua 脚本

    Redis 2.6 开始支持 Lua 脚本,通过在服务器环境嵌入 Lua 环境,Redis 客户端中可以原子地执行多个 Redis 命令. 使用 eval 命令可以直接对输入的脚本求值: 127.0. ...

  5. redis学习笔记——RDB和AOF持久化一

    为防止数据丢失,需要将 Redis 中的数据从内存中 dump 到磁盘,这就是持久化.Redis 提供两种持久化方式:RDB 和 AOF.Redis 允许两者结合,也允许两者同时关闭. RDB 可以定 ...

  6. Redis学习笔记之ABC

    Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...

  7. redis学习笔记(3)

    redis学习笔记第三部分 --redis持久化介绍,事务,主从复制 三,redis的持久化 RDB(Redis DataBase)AOF(Append Only File) RDB:在指定的时间间隔 ...

  8. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  9. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

随机推荐

  1. maven-plugin-shade 详解

    一.介绍 [1] This plugin provides the capability to package the artifact in an uber-jar, including its d ...

  2. 实验一 Python程序设计入门

    学号20184307 2019-2020-2 <Python程序设计>实验1报告 课程:<Python程序设计> 班级: 1843 姓名: 章森洋 学号:20184307 实验 ...

  3. 第3 章 : Kubernetes 核心概念

    Kubernetes 核心概念 本文整理自 CNCF 和阿里巴巴联合举办的云原生技术公开课的课时 3:Kubernetes 核心概念.本次课程中,阿里巴巴资深技术专家.CNCF 9个 TCO 之一 李 ...

  4. 详细Tomcat安装及问题排查

    一.安装 1.下载官网:https://tomcat.apache.org/ 2.将下载后的包解压到目录中会出现以下页面 3.设置环境变量,向path中添加tomcat的bin目录地址 4.cmd进入 ...

  5. redhat 7.6 安装Python3后配置 yum pip3 升级openssl

    安装python3后需要重新配置yum 配置yum vim /usr/bin/yum #! /usr/bin/python #修改前#! /usr/bin/python2 #修改后 vim /usr/ ...

  6. Day13_66_sleep()方法 (二)

    sleep()方法 (二) * 因为sleep()是静态方法,所以用 线程对象名.sleep() 和 Thread.sleep()是一样的意思,用线程对象名调用并不等于让线程对象名所指向的线程阻塞,而 ...

  7. Day03_16_递归

    Java递归 递归包含两个部分 递归头: 标明了什么时候结束递归调用,如果没有递归头,程序将陷入死循环. 递归体: 标明了什么时候需要继续调用自身. 实例 import java.util.Scann ...

  8. Vue和Node.js交互之token

    博主最近工作的时候,公司后台使用的JAVA,在做登陆时总会传来一个token然后我存在了本地存储中或Vuex中,之后每一次请求把它带在请求头上,然后就好奇想要自己做一个后台服务器然后做一个完整的登陆的 ...

  9. k8s ingress-nginx

    转载自https://blog.csdn.net/bjwf125/article/details/104663542/ Kubernetes系列之Kubernetes使用ingress-nginx作为 ...

  10. 二. 简单初步认识SpringCloud

    (一)微服务的实现方式很多,但是最火的莫过于Spring Cloud了.为什么? 后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大. 技术强:Spring作为Java领域 ...