Redis学习笔记六:持久化实验(AOF,RDB)
作者: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)的更多相关文章
- Redis学习笔记9--Redis持久化
redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化.redis支持四种持久化方式,一是 Snapshotting(快照)也是默认方式:二是Appen ...
- Redis学习笔记(一)-持久化
一.RDB持久方式 RDB持久化是把当前进程的数据已快照的形式保存到硬盘的过程. 触发方式: 1.手动触发命令:save和bgsave save:阻塞式,内存较大的实例在执行过程中会造成长时间的阻塞, ...
- Redis学习笔记(九) AOF持久化
除了RDB持久化功能之外,Redis还提供了AOF持久化功能.与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的. 服务 ...
- Redis学习笔记六:独立功能之 Lua 脚本
Redis 2.6 开始支持 Lua 脚本,通过在服务器环境嵌入 Lua 环境,Redis 客户端中可以原子地执行多个 Redis 命令. 使用 eval 命令可以直接对输入的脚本求值: 127.0. ...
- redis学习笔记——RDB和AOF持久化一
为防止数据丢失,需要将 Redis 中的数据从内存中 dump 到磁盘,这就是持久化.Redis 提供两种持久化方式:RDB 和 AOF.Redis 允许两者结合,也允许两者同时关闭. RDB 可以定 ...
- Redis学习笔记之ABC
Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...
- redis学习笔记(3)
redis学习笔记第三部分 --redis持久化介绍,事务,主从复制 三,redis的持久化 RDB(Redis DataBase)AOF(Append Only File) RDB:在指定的时间间隔 ...
- redis 学习笔记(6)-cluster集群搭建
上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...
- Redis学习笔记4-Redis配置详解
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...
随机推荐
- 周期串(JAVA语言)
package 第三章习题; /* * 如果一个字符可以由某个长度为k的字符串重复多次得到,则称该串以k为周期. * 例如:abcabcabcabc 以3为周期(注意:它也以6和12为周期) * ...
- C语言之文件操作
C语言之文件操作 在本节我们将会讲解有关文件的读写操作: 纲要: 一些需要掌握的知识点 文件名 文件类型 数据流 文件缓冲区 文件指针 与文件操作相关的一些函数 文件的打开及关闭 文件的顺序读写 文件 ...
- 【DB宝46】NoSQL数据库之CouchBase简介、集群搭建、XDCR同步及备份恢复
目录 一. CouchBase概述 1.1.简述 1.2.CouchDB和CouchBase比对 1.2.1.CouchDB和CouchBase的相同之处 1.2.2.CouchDB和CouchBas ...
- electron踩坑系列之一
前言 以electron作为基础框架,已经开发两个项目了.第一个项目,我主要负责用react写页面,第二项目既负责electron部分+UI部分. 做项目,就是踩坑, 一路做项目,一路踩坑,坑多不可怕 ...
- 再学dockerfile
前言 docker的系统学习可以看我这篇博文:https://www.cnblogs.com/zisefeizhu/p/11298818.html 有非常详细的讲解 容器现在都是用kubernetes ...
- 基于ceph rbd 在kubernetes harbor 空间下创建动态存储
[root@bs-k8s-ceph ~]# ceph osd pool create harbor 128 Error ETIMEDOUT: crush test failed with -110: ...
- JMeter元件作用域实践指南
从一个问题说起 对于以下测试脚本: 为了能调用进入房间接口,需要从考场接口获取考场token.为了调用考场接口,需要从登陆接口获取登陆token.元件说明如下: 学生登录,提取登录${token}传入 ...
- 干货!Apache Hudi如何智能处理小文件问题
1. 引入 Apache Hudi是一个流行的开源的数据湖框架,Hudi提供的一个非常重要的特性是自动管理文件大小,而不用用户干预.大量的小文件将会导致很差的查询分析性能,因为查询引擎执行查询时需要进 ...
- 关于ArrayList 中子方法 -- contains 疑惑解决
写之前先看下 ArrayList 子函数 contains 的Api 怎么介绍: boolean contains(Object o) 如果此列表中包含指定的元素,则返回 true ...
- sharedWorker 实现多页面通信
是这样的,今天玩github,先是在没有登录浏览了一些页面,然后在某一页面进行了登录.这时再切换的其他页面时就看到了下面的提示: 那么这是怎么做到的呢?我们可以想到,一种办法是 localStorag ...