第一节:Redis 持久化介绍

redis所有的数据都存在内存中,所以速度非常快,但是一旦断电等情况,数据就没了。从内存当中同步到硬盘上,这个过程叫做持久化过程。
持久化操作,两种方式:rdb方式、aof方式,可以单独使用或者结合使用。
 
使用方法:
 rdb持久化方法:在指定的时间间隔写入硬盘
aof方式:将以日志,记录每一个操作,服务器启动后就构建数据库。
 
配置可以禁用 持久化功能。

也可以同时使用两种方式。
 

第二节:Redis 的持久化之RDB 方式

RDB方式 Redis是默认支持的
优势:只有一个文件,时间间隔的数据,可以归档为一个文件,方便压缩转移(就一个文件)
劣势:如果宕机,数据损失比较大,因为它是没一个时间段进行持久化操作的。也就是积攒的数据比较多,一旦懵逼,就彻底懵逼了
 
1)查看redis.conf配置:
#   like in the following example:
#
# save "" save 900 1
save 300 10
save 60 10000
这里save 900 1 表示 每900秒内至少有1个kery发生变化,就持久化
save 300 10表示 每300秒内至少有10个key发生变化,就持久化
save 60 10000表示 每60秒内至少有10000个key发生变化,就持久化
 
# The filename where to dump the DB
dbfilename dump.rdb

这里有个dbfilename配置 是 保存的持久化的文件名 默认是dump.rdb

# Note that you must specify a directory here, not a file name.
dir ./

dump.rdb文件的存储位置,dir ./ 表示文件存储路径是当前路径;

2)RDB备份和恢复数据
假如遇到断电或者宕机或者自然灾害, 我们需要恢复数据 我们模拟下:
a.先将数据全部置为空,启动是没有数据的:
[root@bogon redis]# ll
总用量 52
drwxr-xr-x. 2 root root 134 3月 31 20:51 bin
-rw-r--r--. 1 root root 117 4月 1 11:15 dump.rdb
-rw-r--r--. 1 root root 46689 4月 1 11:16 redis.conf
[root@bogon redis]# rm -rf dump.rdb
[root@bogon redis]# ll
总用量 48
drwxr-xr-x. 2 root root 134 3月 31 20:51 bin
-rw-r--r--. 1 root root 46689 4月 1 11:16 redis.conf
[root@bogon redis]# bin/redis-server redis.conf
[root@bogon redis]# bin/redis-cli
127.0.0.1:6379> keys *
(empty list or set)
b.弄点数据,在重启redis,这时候启动过程会进程rdb check验证 然后加载redis目录下rdb文件;加载数据:
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set test1 aa
OK
127.0.0.1:6379> set test2 bb
OK
127.0.0.1:6379> shutdown save
not connected> exit
[root@bogon redis]# ll
总用量 52
drwxr-xr-x. 2 root root 134 3月 31 20:51 bin
-rw-r--r--. 1 root root 102 4月 1 11:24 dump.rdb
-rw-r--r--. 1 root root 46689 4月 1 11:16 redis.conf
[root@bogon redis]# bin/redis-server redis.conf
[root@bogon redis]# bin/redis-cli
127.0.0.1:6379> keys *
1) "test1"
2) "test2"

说明是数据加载进来了;

c.把dump.rdb剪切到/root/下面,再重启redis,发现数据没了:

[root@bogon redis]# ll
总用量 52
drwxr-xr-x. 2 root root 134 3月 31 20:51 bin
-rw-r--r--. 1 root root 102 4月 1 11:29 dump.rdb
-rw-r--r--. 1 root root 46689 4月 1 11:16 redis.conf
[root@bogon redis]# mv dump.rdb /root/
[root@bogon redis]# cd /root/
[root@bogon ~]# ll
总用量 1528
-rw-------. 1 root root 1269 3月 31 23:56 anaconda-ks.cfg
-rw-r--r--. 1 root root 102 4月 1 11:29 dump.rdb
drwxrwxr-x. 6 root root 4096 7月 28 2017 redis-3.2.10
-rw-r--r--. 1 root root 1550261 7月 29 2017 redis-3.2.10.tar.gz
[root@bogon ~]# cd /usr/local/redis/
[root@bogon redis]# bin/redis-server redis.conf
[root@bogon redis]# bin/redis-cli
127.0.0.1:6379> keys *
(empty list or set)

d.恢复数据的话 我们只需要把备份文件搞到redis下即可,再把/root/dump.rdb拷贝到redis目录下,在启动,发现原来的数据恢复了:

[root@bogon redis]# ll
总用量 48
drwxr-xr-x. 2 root root 134 3月 31 20:51 bin
-rw-r--r--. 1 root root 46689 4月 1 11:16 redis.conf
[root@bogon redis]# mv /root/dump.rdb /usr/local/redis/
[root@bogon redis]# ll
总用量 52
drwxr-xr-x. 2 root root 134 3月 31 20:51 bin
-rw-r--r--. 1 root root 102 4月 1 11:29 dump.rdb
-rw-r--r--. 1 root root 46689 4月 1 11:16 redis.conf
[root@bogon redis]# bin/redis-sever redis.conf
-bash: bin/redis-sever: 没有那个文件或目录
[root@bogon redis]# bin/redis-server redis.conf
[root@bogon redis]# bin/redis-cli
127.0.0.1:6379> keys *
1) "test2"
2) "test1"

这时候 数据就有了 这就是恢复过程;

总结下

平时我们可以定期把rdb文件备份到指定地方 需要恢复的时候 直接把rdb搞到redis下即可;

峰Redis学习(7)Redis 持久化RDB方式的更多相关文章

  1. redis学习系列——redis持久化

    1.写操作的流程 2.RDB快照-redis的第一个持久化策略 第一种是以快照的形式持久化到本地磁盘(RDB文件). 持久化策略是: 1.配置(save N M)在N秒内,redis至少发生M次修改, ...

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

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

  3. redis++:Redis的两种持久化 RDB 和 AOF

    Redis持久化备份数据的方式有两种:RDB(Redis DataBase) . AOF(Append Only  File). RDB 什么是RDB: 在指定时间间隔内,将内存中的数据集快照写入磁盘 ...

  4. 尚硅谷redis学习6-持久化RDB

    是什么 持久化文件保存在dump.rdb中 持久化策略 在shutdown或flush或flushall后会立即持久化 重新启动后会从rdb文件中恢复数据 可以手动持久化 持久化失败时不允许写,如在强 ...

  5. 08_Redis持久化——RDB方式

    [简述] 持久化:Redis能将数据从内存中以某种形式同步到硬盘中,使得重启后可以根据硬盘中的记录恢复数据,这一过程就是持久化. Redis支持两种方式的持久化,简单来说如下: RDB方式:会根据指定 ...

  6. redis学习之——redis.conf配置(基本)文件学习

    # Redis configuration file example # Note on units: when memory size is needed, it is possible to sp ...

  7. Redis学习笔记--Redis配置文件redis.conf参数配置详解

    ########################################## 常规 ########################################## daemonize n ...

  8. Redis学习-redis概述

    最近刚刚接触了redis技术,对此有一些了解,这是简单做一点总结. Redis简介 首先,简单了解一下NoSQL(Not only sql),不要错误的理解为:没有SQL,而是不仅仅是SQL.NoSQ ...

  9. Redis学习笔记~Redis主从服务器,读写分离

    回到目录 Redis这个Nosql的存储系统一般会被部署到linux系统中,我们可以把它当成是一个数据服务器,对于并发理大时,我们会使用多台服务器充当Redis服务器,这时,各个Redis之间也是分布 ...

随机推荐

  1. RNN-LSTM-GRU-BIRNN

    https://blog.csdn.net/wangyangzhizhou/article/details/76651116 共三篇 RNN的模型展开后多个时刻隐层互相连接,而所有循环神经网络都有一个 ...

  2. HDU 1907:John(尼姆博弈变形)

    John Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submi ...

  3. JSM的topic和queue的区别

    在JMS(Java消息服务)中,Topic实现publish和subscribe语义.一条消息被publish时,它将发到所有感兴趣的订阅者,所以零到多个 subscriber(电脑词汇中解释为“用户 ...

  4. C# 敏捷1

    using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; ...

  5. (8)Python连接操作MySQL

    pymysql模块下的方法 '''必须实例化对象才能建立连接''' 1.pymysql.connect  #和MySQL建立连接 '''得由对象去调用定义游标''' 2.xxx.sursor()  # ...

  6. fcntl获取和修改文件打开状态标志

    [root@bogon code]# cat b.c #include<stdio.h> #include<error.h> #include<unistd.h> ...

  7. tailor multi fragment && cutom-amd script demo 说明

    tailor 官方demo 中提供了一个multi fragment 的demo,这个比较简单,就是使用不同的 后端server 做为fragment ,然后使用 html tag 进行加载就可以了. ...

  8. C#窗体模拟键盘按键(组合键)产生事件 ---- 通过keybd_event()函数

    如何模拟键盘按键触发产生的事件,比如模拟按下Alt + F4 关闭当前程序,Ctrl+Shift 切换输入法等 可以通过win32api 键盘事件 keybd_event() 来实现 1.定义键盘按键 ...

  9. 通过LoadGenerator将Linux作为负载机进行压力测试

    前提说明: 测试架构:controller部署在windows操作系统下(windows下安装loadrunner的过程,可以去网上搜下,这里不做解释),loadgenerator部署在linux下. ...

  10. 为什么 PCB 生产时推荐出 Gerber 给工厂?

    为什么 PCB 生产时推荐出 Gerber 给工厂? 事情是这样的,有一天电工王工,画了一块 PCB,发给 PCB 板厂. 过了几天 PCB 回来了,一看不对呀,这里的丝印怎么少了,那里怎么多了几条线 ...