• 峰Redis学习(7)Redis 持久化RDB方式


    第一节: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下即可;

  • 相关阅读:
    完美解决CTRL+空格不能切换中/英文输入法的问题
    【Delphi内联汇编学习1】Delphi与汇编
    替换bmp图片中的颜色 good
    将四个BYTE数值转换成IEEE754标准的浮点数(两种方法:用Addr函数取字节数字的首地址,或者用Absolute关键字)
    在delphi的exe文件中嵌入另外一个exe文件
    Qt中的串口编程之三
    使用MIDAS访问远程Access数据库
    QSqlDatabase的进一步封装(多线程支持+更加简单的操作)——同时支持MySQL, SQL Server和Sqlite
    Qt for Linux:环境搭建(CentOS 6.5 32位)——完全从零安装
    Qt for Windows:使用WinPcap开发高性能UDP服务器
  • 原文地址:https://www.cnblogs.com/tenWood/p/8686074.html
Copyright © 2020-2023  润新知