redis的持久化相关操纵
一.redis数据持久化(数据保存在硬盘上)
1. 关系型数据库Mmysql持久化
任何增删改语句都是在硬盘上操作(安全)
断电,硬盘上数据还在 2.非关系型数据库
默认所有的增删改都是在内存中操作(高效不安全)
断电以后内存数据不存在 断电以后redis部分数据会丢失:丢失的数据是保存在在内存
1.redis持久化操作(RDB)
redis提供了RDB(Redis DataBase)持久化的功能,这个功能可以将redis在内存中的的状态保存到硬盘中,它可以手动执行。
也可以再redis.conf中配置,定期执行。
RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。
RDB:默认的持久化操作,相当于快照,保存的是状态,在redis安装目录有个dump.rdb就是快照
优点:(1)快照保存数据速度极快,还原熟读极快
(2)适合灾难备份
缺点:随时随地开启(容易占用系统资源),不适合小内存的机器使用
(1)符合要求就会进行快照
服务器正常关闭 照快照
key满足一定条件时候 照快照
(2)何时开启快照
服务器正常关闭时候,照一次快照
key满足一定条件时候 照快照
redis.conf文件配置,满足一下任一条件:
900秒(15分钟至少有1个key发生变化),照快照
300秒内,至少有10key改变,照快照
60秒内,至少有10000个改变,照快照
2.RDB的配置使用
1.在redis启动文件中写入如下配置
port 6379
daemonize yes
dir /data/6379 # 定义持久化文件存储位置
pidfile /data/6379/redis.pid # redis进程pid文件
loglevel notice # 日志级别
logfile "/data/6379/redis.log" # redis日志log文件
protected-mode yes # 保护模式
dbfilename dbmp.rdb # rdb持久化文件名
#bind 10.0.0.10 127.0.0.1 # redis绑定地址
#requirepass redhat # redis登录密码
save 900 1 # rdb机制 每900秒 有1个修改记录
save 300 10 # 每300秒 10个修改记录
save 60 10000 # 每60秒内 10000修改记录
2.启动redis服务端
3.登录redis设置一个key
4.此时检查目录,/data/6379底下没有dbmp.rdb文件

5.通过save触发持久化,将数据写入RDB文件
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> save
OK
注意: 由于这个dbmp.rdb文件是用来存储持久化数据的,理所当然如果被删除了的话,数据就会消失
3.REDIS的持久化(AOF)
AOF(append-only log file)
记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集
AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。
优点:最大程度保证数据不丢失 (比RDB要好,因为RDB有可能丢失数据)
缺点:日志记录非常大
AOF:适合内存比较小的计算机,使用日志功能来保存数据 默认是关闭:所有三种选项
每秒同步(安全性,但是不浪费资源)
每修改同步:只要有key变化语句,就进行AOF保存数据 (比较安全,但是占用资源)
不同步(默认):不进行任何持久化操作 AOF操作:只记录key变化的语句
AOF配置:
appenddonly 改为yes
always:每修改同步
everysecond:每秒同步
no :从不同步
优点:持续占用极少量资源
缺点:日志文件会特比大
4.开启AOF的操作流程
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服务
redis-server /etc/redis/6379.conf
3.检查redis数据目录/data/6379/是否产生了aof文件
[root@qishi bin]# ll /etc/redis
total 72
-rw-r--r--. 1 root root 57775 Apr 20 15:11 6379.conf
-rw-r--r--. 1 root root 139 Apr 20 14:27 6380.conf
-rw-r--r--. 1 root root 62 Apr 20 15:12 appendonly.aof
drwxr-xr-x. 3 root root 18 Apr 16 19:16 data

4..登录redis-cli,写入数据,实时检查aof文件信息
tail -f /etc/redis/appendonly.aof

5.设置新key,检查aof信息,然后关闭redis,检查数据是否持久化
redis-cli -a redhat shutdown redis-server /etc/redis.conf redis-cli -a redhat
文件的位置:不管是是dump.rdb还是appendonly.aof文件的路径都是通过配置文件的dir选项指定的
二.redis不重启,从RDB切换到AOF
1.确保redis版本在2.2以上
redis-server -v
Redis server v=4.0.6 sha=00000000:0 malloc=libc bits=64 build=1a3f9c0b300
2.配置RDB持久化,确保没有AOF的配置
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修改记录
3.启动redis服务端
redis-server /etc/redis/6379.conf
2981:C 20 Apr 15:33:16.356 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0O
2981:C 20 Apr 15:33:16.356 # Redis version=4.0.6, bits=64, commit=0000000
2981:C 20 Apr 15:33:16.356 # Configuration loaded
4.登录redis-cli插入数据,手动持久化
127.0.0.1:6379> keys *
1) "dajiba"
2) "wojiushi"
127.0.0.1:6379> set wocao nidayede
OK
127.0.0.1:6379> save
OK
5.检查RDB文件
dump.rdb
6.备份RDB文件
#进入文件夹
cp dump.rdb dump.rdb.bak
7. 执行命令,开启AOF持久化
#看清楚大小写啊 127.0.0.1:6379> CONFIG set appendonly yes
OK
127.0.0.1:6379> CONFIG SET save ""
OK
注意: 此命令开启的AOF功能只是临时启用,redis服务重启之后就会失效,因为配置文件并没有AOF的配置。
不过没关系, 我们的目的是不重启切换至AOF
8. 验证旧的RDB数据库数据是否转入AOF, 以及AOF持久化文件是否正常写入
#登录客户端,查看key的熟练
127.0.0.1:6379> keys *
1) "dajiba"
2) "wojiushi"
3) "wocao" #查看这些数据是否同步否appendonl.aof文件中了
tail -f appendonle.aof #增加key
127.0.0.1:6379> set nidaye adsd
OK #在查看新增的数据是否到appendonly.aof中
tail -f appendonle.aof
此时RDB已经正确切换AOF,注意还得修改redis.conf添加AOF设置,不然重启后,通过config set的配置将丢失
redis的持久化相关操纵的更多相关文章
- Redis 之持久化
目录 一.前言 二.持久化类型之 RDB 三.持节化类型之AOF 四.Redis 持久化类型的抉择 五.持久化的恢复 六.持久化问题的分析定位与优化 七.回顾总结 一.前言 首先,来回顾下前面文章的知 ...
- redis的持久化功能
基于快照持久化 修改配置文件,开始基于快照的选项 [root@localhostbin]#vim /etc/redis/redis.conf stop-writes-on-bgsave-error y ...
- Redis的持久化的两种方式drbd以及aof日志方式
redis的持久化配置: 主要包括两种方式:1.快照 2 日志 来看一下redis的rdb的配置选项和它的工作原理: save 900 1 // 表示的是900s内,有1条写入,则产生快照 save ...
- redis + 主从 + 持久化 + 分片 + 集群 + spring集成
Redis是一个基于内存的数据库,其不仅读写速度快,每秒可以执行大约110000的写操作,81000的读取操作,而且其支持存储字符串,哈希结构,链表,集合丰富的数据类型.所以得到很多开发者的青睐.加之 ...
- Redis数据持久化、数据备份、数据的故障恢复
1.redis持久化的意义----redis故障恢复 在实际的生产环境中,很可能会遇到redis突然挂掉的情况,比如redis的进程死掉了.电缆被施工队挖了(支付宝例子)等等,总之一定会遇到各种奇葩的 ...
- 深入理解Redis的持久化
RDB RDB是将当前数据生成快照保存到硬盘上. RDB的工作流程: 1. 执行bgsave命令,Redis父进程判断当前是否存在正在执行的子进程,如RDB/AOF子进程,如果存在bgsave命令直接 ...
- 11、Redis的持久化(RDB、AOF)
写在前面的话:读书破万卷,编码如有神 --------------------------------------------------------------------------------- ...
- redis数据持久化(快照/日志):
1.RDB快照的配置选项: save // 900内,有1条写入,则产生快照 save // 如果300秒内有1000次写入,则产生快照 save // 如果60秒内有10000次写入,则产生快照 ( ...
- Redis数据持久化机制AOF原理分析一---转
http://blog.csdn.net/acceptedxukai/article/details/18136903 http://blog.csdn.net/acceptedxukai/artic ...
随机推荐
- Oracle 用户验证日志
1.sysdba/sysoper 权限用户验证日志;2.非sysdba/sysoper 权限用户验证日志;3.关于sqlcode; 1.sysdba/sysoper 权限用户验证日志:在数据库设置了参 ...
- ajax中 XmlHttp的open( )方法
博客分类: Ajax XML open 创建一个新的http请求,并指定此请求的方法.URL以及验证信息 语法 oXMLHttpRequest.open(bstrMethod, bstrUrl, ...
- C# 银行系统
今天分享一个大家都爱的Money 银行系统代码 可以随心所欲的存钱取钱 //要想成功,必须马到 //建立数组 Card[] cards = ]; //卡类初始化 public void Initia ...
- Ubuntu建立WIFI热点
网络共享 http://www.linuxidc.com/Linux/2014-07/104624.htm
- 编写高质量代码改善C#程序的157个建议——建议115:通过HASH来验证文件是否被篡改
建议115:通过HASH来验证文件是否被篡改 MD5算法作为一种最通用的HASH算法,也被广泛用于文件完整性的验证上.文件通过MD5-HASH算法求值,总能得到一个固定长度的MD5值.虽说MD5是一种 ...
- arch+win7 双系统启动引导
笔者的电脑之前已经安装了win7,安装完arch后电脑中存在两个系统,因此需要引导连个系统. 1. 在安装arch时,一般都会安装grub.如果没有安装,则参考arch wiki中 grub2一节安装 ...
- 在Arch gnome中安装一些软件
一. 在Arch gnome中添加ibus中文输入法 1. 安装ibus-libpinyin. sudo pacman -S ibus-libpinyin 如果系统之前没有安装ibus,则先通过pac ...
- ibatis源码学习4_参数和结果的映射原理
问题在详细介绍ibatis参数和结果映射原理之前,让我们先来思考几个问题.1. 为什么需要参数和结果的映射?相对于全自动的orm,ibatis一个重要目标是,通过维护POJO与SQL之间的映射关系,让 ...
- MFC中按钮控件的用法笔记(转)
VC学习笔记1:按钮的使能与禁止 用ClassWizard的Member Variables为按钮定义变量,如:m_Button1:则m_Button1.EnableWindow(true); 使按钮 ...
- Maven项目常见错误
一.Cannot change version of project facet Dynamic Web Module to 3.0. 和 One or more constraints have n ...