rdb持久化存储数据

总的

redis持久化
防止数据丢失,持久化到本地,以文件形式保存 持久化的方式 ,两种 aof和 rdb模式 1.触发机制,
- 手动执行save命令
- 或者配置触发条件 save 200 10 #在200秒中内,超过10个修改类的操作 2.建立redis配置文件,开启rdb功能 配置文件 s21_rdb.conf 内容如下 ,有关rdb的配置参数是 dbfilename dbmp.rdb ,一个是 save 900 1 daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379 #定义持久化文件存储位置
dbfilename s21redis.rdb #rdb持久化文件
bind 127.0.0.1 #redis绑定地址
requirepass redhat #
save 900 1 #rdb机制 每900秒 有1个修改记录
save 300 10 #每300秒 10个修改记录
save 60 10000 #每60秒内 10000修改记录 save 20 2 #在20秒内,超过2个修改类的操作

当没有持久化存储时,停掉服务数据就丢失

[root@mcw01 ~/redis]$ redis-cli  -h 10.0.0.11 -p 6379  #查看有三个key
10.0.0.11:6379> auth mcw123
OK
10.0.0.11:6379> keys *
1) "stu2"
2) "stu1"
3) "new1"
10.0.0.11:6379>
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
root 24392 1 0 19:10 ? 00:00:21 redis-server 10.0.0.11:6379
[root@mcw01 ~/redis]$ kill 24392 #杀掉redis服务
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
[root@mcw01 ~/redis]$ redis-server mcwRedis.conf #重新启动redis服务
24590:C 05 Mar 23:08:45.304 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
24590:C 05 Mar 23:08:45.304 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=24590, just started
24590:C 05 Mar 23:08:45.304 # Configuration loaded
[root@mcw01 ~/redis]$ redis-cli -h 10.0.0.11 -p 6379 #重连
10.0.0.11:6379> auth mcw123
OK
10.0.0.11:6379> keys * #查看三个key已经丢失
(empty list or set)
10.0.0.11:6379> redis持久化配置文件: daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename mcwredis.rdb
bind 127.0.0.1
save 900 1
save 300 10
save 60 10000

演示save 20 2 #持久化数据

#在20秒内,超过2个修改类的操作就做持久化保存

[root@mcw01 ~/redis]$ ls
00-RELEASENOTES CONTRIBUTING deps Makefile mcwRedis.conf redis.conf runtest-cluster sentinel.conf tests
BUGS COPYING INSTALL MANIFESTO README.md runtest runtest-sentinel src utils
[root@mcw01 ~/redis]$ vim rdbRedis.conf
[root@mcw01 ~/redis]$ mkdir -p /data/6379
[root@mcw01 ~/redis]$ cat rdbRedis.conf #配置在20秒内,超过2个修改类的操作就做持久化保存
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename mcwredis.rdb
bind 127.0.0.1
save 20 2
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
root 24591 1 0 23:08 ? 00:00:02 redis-server 10.0.0.11:6379
[root@mcw01 ~/redis]$ kill 24591
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
[root@mcw01 ~/redis]$ redis-server rdbRedis.conf #使用这个配置文件启动服务
[root@mcw01 ~/redis]$ ls /data/
6379
[root@mcw01 ~/redis]$ ls /data/6379/ #查看只有个日志文件,无rdb文件
redis.log
[root@mcw01 ~/redis]$ redis-cli
127.0.0.1:6379> set name1 mcw
OK
127.0.0.1:6379> set name2 mcw2 #20秒时间内添加两条数据
OK
127.0.0.1:6379>
[root@mcw01 ~/redis]$ ls /data/
6379
[root@mcw01 ~/redis]$ ls /data/6379/ #查看已生成rdb文件
mcwredis.rdb redis.log 已生成rdb文件了,重启服务,然后进去看到数据还存在的。也就是只要保存进这个rdb文件,那么即使服务停止重启,也不会丢失保存下来的数据
[root@mcw01 ~/redis]$ ls /data/6379/ #查看已生成rdb文件
mcwredis.rdb redis.log
[root@mcw01 ~/redis]$
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
root 24625 1 0 23:32 ? 00:00:00 redis-server 127.0.0.1:6379
[root@mcw01 ~/redis]$ kill 24625
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
[root@mcw01 ~/redis]$ redis-server rdbRedis.conf
[root@mcw01 ~/redis]$ redis-cli
127.0.0.1:6379> keys *
1) "name1"
2) "name2"
127.0.0.1:6379> get name1
"mcw"
127.0.0.1:6379>

手动save持久化数据

[root@mcw01 ~/redis]$ ls
00-RELEASENOTES BUGS COPYING INSTALL MANIFESTO rdbRedis.conf redis.conf runtest-cluster sentinel.conf tests
6379 CONTRIBUTING deps Makefile mcwRedis.conf README.md runtest runtest-sentinel src utils
[root@mcw01 ~/redis]$ vim rdbRedis.conf
[root@mcw01 ~/redis]$ cat rdbRedis.conf #修改配置文件1000秒内插入10条才触发持久化保存数据
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename mcwredis.rdb
bind 127.0.0.1
save 1000 10
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
root 24657 1 0 23:41 ? 00:00:00 redis-server 127.0.0.1:6379
[root@mcw01 ~/redis]$ kill 24657 #停掉服务
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
[root@mcw01 ~/redis]$ rm -rf /data/6379/* #删除原来的数据
[root@mcw01 ~/redis]$ redis-server rdbRedis.conf #用新配置文件启动服务
[root@mcw01 ~/redis]$ redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name1 mcw1
OK
127.0.0.1:6379> set name2 mcw2 #添加两条数据
OK
127.0.0.1:6379> keys *
1) "name2"
2) "name1"
127.0.0.1:6379>
[root@mcw01 ~/redis]$ ls /data/6379/ #查看此时还没有持久化保存数据,没有达到save的条件
redis.log
[root@mcw01 ~/redis]$ redis-cli
127.0.0.1:6379> keys *
1) "name2"
2) "name1"
127.0.0.1:6379> save #重新进入,手动执行save命令持久化保存数据
OK
127.0.0.1:6379>
[root@mcw01 ~/redis]$ ls /data/6379/ #发现已经生成持久化rdb文件。说明save保存数据生效
mcwredis.rdb redis.log
[root@mcw01 ~/redis]$

aof持久化存储数据

总的

3.第二个机制 aof机制 ,将你的修改类的操作命令,追加到日志文件中

修改aof配置文件,添加如下参数,核心功能参数是 

appendonly yes
appendfsync always 总是修改类的操作
everysec 每秒做一次持久化
no 依赖于系统自带的缓存大小机制 创建aof配置文件s21aof.conf ,内容如下

详细步骤

新增后两条配置
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
appendonly yes
appendfsync everysec [root@mcw01 ~/redis]$ ls
00-RELEASENOTES aofRedis.conf CONTRIBUTING deps Makefile mcwRedis.conf README.md runtest runtest-sentinel src utils
6379 BUGS COPYING INSTALL MANIFESTO rdbRedis.conf redis.conf runtest-cluster sentinel.conf tests
[root@mcw01 ~/redis]$ cat aofRedis.conf #查看aof配置
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
appendonly yes
appendfsync everysec
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
root 24760 1 0 00:02 ? 00:00:00 redis-server *:6379
[root@mcw01 ~/redis]$ kill 24760 #杀掉redis服务
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
[root@mcw01 ~/redis]$ rm -rf /data/6379/* #删除旧的数据
[root@mcw01 ~/redis]$ redis-server aofRedis.conf #使用aof配置启动服务
[root@mcw01 ~/redis]$ ls /data/6379/ #查看已经生成aof文件,但是还没有数据。
appendonly.aof redis.log 当我再开一个窗口时,登录上时,执行keys *,是没有往aof里添加内容的。
[root@mcw01 ~]$ redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name mcw
OK
127.0.0.1:6379> 当执行了set name mcw 这种新增语句时,就将语句写进了aof文件,如下
[root@mcw01 ~/redis]$ tailf /data/6379/appendonly.aof *2
$6
SELECT
$1
0
*3
$3
set
$4
name
$3
mcw
^C
[root@mcw01 ~/redis]$ 当我杀掉redis进程后,重新用配置文件启动服务,因为数据已经保存进aof文件了,所以没有丢失数据
[root@mcw01 ~/redis]$ ls /data/6379/
appendonly.aof redis.log
[root@mcw01 ~/redis]$ ls
00-RELEASENOTES aofRedis.conf CONTRIBUTING deps Makefile mcwRedis.conf README.md runtest runtest-sentinel src utils
6379 BUGS COPYING INSTALL MANIFESTO rdbRedis.conf redis.conf runtest-cluster sentinel.conf tests
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
root 24801 1 0 00:04 ? 00:00:00 redis-server *:6379
[root@mcw01 ~/redis]$ kill 24801
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
[root@mcw01 ~/redis]$ redis-server aofRedis.conf
[root@mcw01 ~/redis]$ redis-cli
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> get name
"mcw"
127.0.0.1:6379>

不重启redis将rdb备份修改为aof备份

4.rdb模式下的redis持久化,不重启切换为 aof模式

    环境准备
1.准备一个有数据的rdb模式的redis数据库
准备rdb配置文件
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379 #定义持久化文件存储位置
dbfilename s21redis.rdb #rdb持久化文件
bind 127.0.0.1 #redis绑定地址
requirepass redhat #
save 900 1 #rdb机制 每900秒 有1个修改记录
save 300 10 #每300秒 10个修改记录
save 60 10000 #每60秒内 10000修改记录 save 20 2 #在20秒内,超过2个修改类的操作 #详细看博客https://www.cnblogs.com/pyyu/p/10061526.html 2.注意想要永久切换为aof,还得修改配置文件方可
准备环境:
[root@mcw01 ~/redis]$ ls
00-RELEASENOTES aofRedis.conf CONTRIBUTING deps Makefile mcwRedis.conf README.md runtest runtest-sentinel src utils
6379 BUGS COPYING INSTALL MANIFESTO rdbRedis.conf redis.conf runtest-cluster sentinel.conf tests
[root@mcw01 ~/redis]$ cp rdbRedis.conf 2rdbRedis.conf
[root@mcw01 ~/redis]$ cat 2rdbRedis.conf #复制过来一份rdb的配置文件
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename mcwredis.rdb
bind 127.0.0.1
save 1000 10
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
root 24850 1 0 00:14 ? 00:00:03 redis-server *:6379
[root@mcw01 ~/redis]$ kill 24850 #杀掉redis服务
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
[root@mcw01 ~/redis]$ rm -rf /data/6379/* #删除原有的数据 rdb模式的redis下,添加一个数据
[root@mcw01 ~/redis]$ redis-server 2rdbRedis.conf #现在已经准备好rdb的环境了
[root@mcw01 ~/redis]$ ls /data/6379/
redis.log
[root@mcw01 ~/redis]$ redis-cli
127.0.0.1:6379> set name mcw
OK
127.0.0.1:6379> save
OK
127.0.0.1:6379>
[root@mcw01 ~/redis]$ ls /data/6379/ #数据保存到rdb文件中
mcwredis.rdb redis.log
[root@mcw01 ~/redis]$ redis-cli
127.0.0.1:6379> config set appendonly yes #在线修改步骤1,开启aof
OK
127.0.0.1:6379> config set save "" #在线修改步骤2:关闭rdb
OK
127.0.0.1:6379>
[root@mcw01 ~/redis]$ ls /data/6379/
appendonly.aof mcwredis.rdb redis.log
[root@mcw01 ~/redis]$ cat /data/6379/appendonly.aof #然后就可以看到aof将rdb中的数据复制了一份过来
*2
$6
SELECT
$1
0
*3
$3
SET
$4
name
$3
mcw
[root@mcw01 ~/redis]$ vim 2rdbRedis.conf
[root@mcw01 ~/redis]$ cat 2rdbRedis.conf #永久修改为aof,需要修改配置文件,注释两行,添加后两行
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
#dbfilename mcwredis.rdb
bind 127.0.0.1
#save 1000 10
appendonly yes
appendfsync always
[root@mcw01 ~/redis]$
[root@mcw01 ~/redis]$
[root@mcw01 ~/redis]$ ls /data/6379/
appendonly.aof mcwredis.rdb redis.log
[root@mcw01 ~/redis]$ rm -rf /data/6379/mcwredis.rdb #现在可以删除rdb文件了,因为数据都同步到aof上了
[root@mcw01 ~/redis]$ ls /data/6379/
appendonly.aof redis.log
[root@mcw01 ~/redis]$
[root@mcw01 ~/redis]$ 验证重启后数据是否不丢失。
[root@mcw01 ~/redis]$
[root@mcw01 ~/redis]$
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
root 24896 1 0 01:00 ? 00:00:00 redis-server 127.0.0.1:6379
[root@mcw01 ~/redis]$ kill 24896
[root@mcw01 ~/redis]$ ps -ef|grep -v grep |grep redis
[root@mcw01 ~/redis]$ redis-server 2rdbRedis.conf
[root@mcw01 ~/redis]$ redis-cli
127.0.0.1:6379> keys * #重启后验证数据还在,说明已经是成功修改的。生产环境就不需要重启验证了。
1) "name"
127.0.0.1:6379> get name
"mcw"
127.0.0.1:6379>
[root@mcw01 ~/redis]$

redis持久化存储数据(rdb和aof)的更多相关文章

  1. redis持久化的方式RDB 和 AOF

    redis持久化的方式RDB 和 AOF 一.对Redis持久化的探讨与理解 目前Redis持久化的方式有两种: RDB 和 AOF 首先,我们应该明确持久化的数据有什么用,答案是用于重启后的数据恢复 ...

  2. Redis持久化存储——>RDB & AOF

    Redis中两种持久化存储机制RDB和AOF redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB ...

  3. Linux实战教学笔记45:NoSQL数据库之redis持久化存储(一)

    第1章 redis存储系统 1.1 redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Mem ...

  4. Part_three:Redis持久化存储

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

  5. Redis持久化——内存快照(RDB)

    最新:Redis持久化--如何选择合适的持久化方式 最新:Redis持久化--AOF日志 最新:Redis持久化--内存快照(RDB) 一文回顾Redis五大对象(数据类型) Redis对象--有序集 ...

  6. 浅谈:Redis持久化机制(二)AOF篇

    浅谈:Redis持久化机制(二)AOF篇 ​ 上一篇我们提及到了redis的默认持久化方式RDB,是一种通过存储快照数据方式持久化的机制,它在宕机后会丢失掉最后一次更新RDB文件后的数据,这也是由于它 ...

  7. Unity编辑器扩展 Chapter7--使用ScriptableObject持久化存储数据

    Unity编辑器扩展 Chapter7--使用ScriptableObject持久化存储数据 unity unity Editor ScirptableObject  Unity编辑器扩展 Chapt ...

  8. Redis持久化存储(AOF与RDB两种模式)

    Redis中数据存储模式有2种:cache-only,persistence; cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一 ...

  9. Redis持久化存储(RDB和AOF)

    参考了: https://blog.csdn.net/canot/article/details/52886923  和 https://www.cnblogs.com/zhangchao-letv/ ...

  10. mysql如何设置主从(读写分离),redis发布功能,以及redis的持久化存储(rdb,aof)

    1 mysql基本命令 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroot -p -h 127.0.0.1 3.远程链接mysq ...

随机推荐

  1. Visual Studio 2022插件的安装及使用 - 编程手把手系列文章

    这次开始写手把手编程系列文章,刚写到C#的Dll程序集类库的博文,就发现需要先介绍Visual Studio 2022的插件的安装及使用,因为在后面编码的时候会用到这些个插件,所以有必要先对这个内容进 ...

  2. 【直播回顾】Hello HarmonyOS应用篇第六课——短视频应用开发

    由HDE夏德旺老师主讲的Hello HarmonyOS进阶系列应用篇第六课<短视频应用开发>, 已于6月8日晚上 19 点在HarmonyOS社群内成功举行. 本节课夏德旺老师带领大家了解 ...

  3. Excel 特殊分组汇总示例

    期望结果: 按照成绩划分区间段来分组时,定义好值的划分区间后,只需用 pseg 函数便可以将分数分好段,然后统计出各段人次即可. SPL 代码如下:   A B 1 =clipboard().impo ...

  4. 当 mysql-connector-java-5 遇上 MySQL8,终究还是错付了 → 门当户对真的很重要!

    开心一刻 今天,老婆给我发消息 老婆:老公,儿子从隔壁邻居家回来了 老婆:是先打还是先洗? 我:先洗吧,万一打错人了呢 老婆:先洗脸吧,没错就边打边洗 起因 在我们的固有认知中, mysql-conn ...

  5. 云原生之在kubernetes集群下部署mysql应用

    一.Mysql介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.MySQL是一种开源的关系型数据库管理系统,可将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内,从而 ...

  6. NOIP模拟四

    NOIP模拟四 number 题目描述 现有 \(2^n\) 个点,点编号为 \(0\sim2^n-1\). 定义这些点的一张异或图为: 先选定一个集合 \(S\). 对于原图上编号为 \(x\) 和 ...

  7. react 框架(antd)的使用方法

    脚手架 安装    npm install -g create-react-app 引入: import React, { Component } from "react"; im ...

  8. 力扣372(java)-超级次方(中等)

    题目: 你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出. 示例 1: 输入:a = 2, b = [3]输出:8示例 2: 输入:a = 2, ...

  9. HarmonyOS NEXT应用开发之下拉刷新与上滑加载案例

    介绍 本示例介绍使用第三方库的PullToRefresh组件实现列表的下拉刷新数据和上滑加载后续数据. 效果图预览 使用说明 进入页面,下拉列表触发刷新数据事件,等待数据刷新完成. 上滑列表到底部,触 ...

  10. 逸仙电商Seata企业级落地实践

    简介: 本文将会以逸仙电商的业务作为背景, 先介绍一下seata的原理, 并给大家进行线上演示, 由浅入深去介绍这款中间件, 以便读者更加容易去理解 Seata 这个中间件. 作者 | 张嘉伟(Git ...