zoukankan      html  css  js  c++  java
  • Redis的持久化之RDB方式

    原文:http://blog.java1234.com/blog/articles/323.html

    RDB方式 Redis是默认支持的

     

    优势:只有一个文件,时间间隔的数据,可以归档为一个文件,方便压缩转移(就一个文件)

     

    劣势:如果宕机,数据损失比较大,因为它是没一个时间段进行持久化操作的。也就是积攒的数据比较多,一旦懵逼,就彻底懵逼了

     

    配置:

    [root@localhost redis]# vi redis.conf 

    编辑redis.conf

    往下拉:

    QQ鎴�浘20170718091223.jpg

     

    这里save 900 1 表示 每900秒内至少有1个kery发生变化,就持久化

    save 300 10表示 每300秒内至少有10个key发生变化,就持久化

    save 60 10000表示 每60秒内至少有10000个key发生变化,就持久化

     

    再往下拉:

    QQ鎴�浘20170718091658.jpg

     

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

     

    再往下:

    QQ鎴�浘20170718091821.jpg

     

    dir ./ 表示文件存储路径是当前路径;

     

     

    我们退出

    QQ鎴�浘20170718092622.jpg

     

    当前路径里确实是有这个文件的。

     

     

    RDB北风和恢复数据  

    假如遇到断电或者宕机或者自然灾害, 我们需要恢复数据 我们模拟下。

    我们先重置下数据

    shutdown关闭下redis

    127.0.0.1:6379> shutdown

    not connected> exit

    [root@localhost redis]# ll

    总用量 52

    drwxr-xr-x. 2 root root   134 7月   6 09:18 bin

    -rw-r--r--. 1 root root    99 7月  18 10:41 dump.rdb

    -rw-r--r--. 1 root root 46697 7月  18 10:41 redis.conf

    然后删除掉rdb文件,再启动redis

    [root@localhost redis]# rm -rf dump.rdb 

    [root@localhost redis]# ll

    总用量 48

    drwxr-xr-x. 2 root root   134 7月   6 09:18 bin

    -rw-r--r--. 1 root root 46697 7月  18 10:41 redis.conf

    [root@localhost redis]# ./bin/redis-server ./redis.conf 

    [root@localhost redis]# ./bin/redis-cli

    127.0.0.1:6379> keys *

    (empty list or set)

    这时候是没有数据的

     

    这时候启动 是没数据的

    [root@localhost redis]# ./bin/redis-server ./redis.conf 

    [root@localhost redis]# ./bin/redis-cli

    127.0.0.1:6379> keys *

    (empty list or set)

     

    我们搞几个key,然后shutdown save 保存退出

    127.0.0.1:6379> set n1 1

    OK

    127.0.0.1:6379> set n2 2

    OK

    127.0.0.1:6379> set n3 3

    OK

    127.0.0.1:6379> shutdown save

    not connected> exit

     

    假如这时候 我们再重启redis 这时候启动过程会进程rdb check验证 然后加载redis目录下rdb文件;加载数据;

    我们验证下:

     

    我们再次启动

    [root@localhost redis]# ./bin/redis-server ./redis.conf 

    [root@localhost redis]# ./bin/redis-cli

    127.0.0.1:6379> keys *

    1) "n1"

    2) "n3"

    3) "n2"

    说明是数据加载进来了;

     

    这里我们把redis下的rdb文件剪切到其他地方去 然后再启动试下

    [root@localhost redis]# ll

    总用量 52

    drwxr-xr-x. 2 root root   134 7月  18 11:05 bin

    -rw-r--r--. 1 root root    99 7月  18 11:35 dump.rdb

    -rw-r--r--. 1 root root 46697 7月  18 10:41 redis.conf

    [root@localhost redis]# mv dump.rdb /root/

    [root@localhost redis]# ll

    总用量 48

    drwxr-xr-x. 2 root root   134 7月  18 11:05 bin

    -rw-r--r--. 1 root root 46697 7月  18 10:41 redis.conf

    [root@localhost redis]# ll /root/

    总用量 8

    -rw-------. 1 root root 1261 7月   6 05:42 anaconda-ks.cfg

    -rw-r--r--. 1 root root   99 7月  18 11:35 dump.rdb

    -rw-r--r--. 1 root root    0 7月  13 22:00 java牛逼

    drwxr-xr-x. 2 root root    6 7月  13 22:07 java书籍

     

    剪切到了root下

     

    这时候再启动下:

    [root@localhost redis]# ./bin/redis-server ./redis.conf 

    [root@localhost redis]# ./bin/redis-cli

    127.0.0.1:6379> keys *

    (empty list or set)

    数据没了

     

    恢复数据的话 我们只需要把备份文件搞到redis下即可

    再复制过来即可:

    [root@localhost redis]# cp /root/dump.rdb /usr/local/redis/

    cp:是否覆盖"/usr/local/redis/dump.rdb"? y

    [root@localhost redis]# ./bin/redis-server ./redis.conf 

    [root@localhost redis]# ./bin/redis-cli

    127.0.0.1:6379> keys *

    1) "n2"

    2) "n1"

    3) "n3"

     

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

     

    绕了一大圈 总结下

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

  • 相关阅读:
    课堂作业02
    模仿JavaAppArguments.java示例,编写一个程序,此程序从命令行接收多个数字,求和之后输出结果。
    Feign使用Hystrix无效原因及解决方法
    解决Spring Boot 使用RedisTemplate 存储键值出现乱码 xacxedx00x05tx00
    consul怎么在windows下安装
    java运行jar命令提示没有主清单属性
    Maven parent.relativePath
    Maven的pom.xml文件结构之基本配置packaging和多模块聚合结构(微服务)
    redis开启远程访问
    kibana使用
  • 原文地址:https://www.cnblogs.com/gyadmin/p/8251973.html
Copyright © 2011-2022 走看看