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 ...
随机推荐
- maven-plugin-shade 详解
一.介绍 [1] This plugin provides the capability to package the artifact in an uber-jar, including its d ...
- 实验一 Python程序设计入门
学号20184307 2019-2020-2 <Python程序设计>实验1报告 课程:<Python程序设计> 班级: 1843 姓名: 章森洋 学号:20184307 实验 ...
- 第3 章 : Kubernetes 核心概念
Kubernetes 核心概念 本文整理自 CNCF 和阿里巴巴联合举办的云原生技术公开课的课时 3:Kubernetes 核心概念.本次课程中,阿里巴巴资深技术专家.CNCF 9个 TCO 之一 李 ...
- 详细Tomcat安装及问题排查
一.安装 1.下载官网:https://tomcat.apache.org/ 2.将下载后的包解压到目录中会出现以下页面 3.设置环境变量,向path中添加tomcat的bin目录地址 4.cmd进入 ...
- redhat 7.6 安装Python3后配置 yum pip3 升级openssl
安装python3后需要重新配置yum 配置yum vim /usr/bin/yum #! /usr/bin/python #修改前#! /usr/bin/python2 #修改后 vim /usr/ ...
- Day13_66_sleep()方法 (二)
sleep()方法 (二) * 因为sleep()是静态方法,所以用 线程对象名.sleep() 和 Thread.sleep()是一样的意思,用线程对象名调用并不等于让线程对象名所指向的线程阻塞,而 ...
- Day03_16_递归
Java递归 递归包含两个部分 递归头: 标明了什么时候结束递归调用,如果没有递归头,程序将陷入死循环. 递归体: 标明了什么时候需要继续调用自身. 实例 import java.util.Scann ...
- Vue和Node.js交互之token
博主最近工作的时候,公司后台使用的JAVA,在做登陆时总会传来一个token然后我存在了本地存储中或Vuex中,之后每一次请求把它带在请求头上,然后就好奇想要自己做一个后台服务器然后做一个完整的登陆的 ...
- k8s ingress-nginx
转载自https://blog.csdn.net/bjwf125/article/details/104663542/ Kubernetes系列之Kubernetes使用ingress-nginx作为 ...
- 二. 简单初步认识SpringCloud
(一)微服务的实现方式很多,但是最火的莫过于Spring Cloud了.为什么? 后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大. 技术强:Spring作为Java领域 ...