经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Redis » 查看文章
Part_three:Redis持久化存储
来源:cnblogs  作者:是阿凯啊  时间:2019/9/23 8:46:54  对本文有异议

redis持久化存储

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

1.RDB持久化

  • redis提供了RDB持久化的功能,这个功能可以将redis在内存中的状态数据保存到磁盘

  • 触发机制:

    • 手动执行save命令
    • 或者配置触发条件
  • 配置文件:s21_rdb.conf

    • 配置核心参数:
      • dbfilename s21redis.rdb
      • save 900 1
    1. daemonize yes
    2. port 6379
    3. logfile /data/6379/redis.log
    4. dir /data/6379 #定义持久化文件存储位置/data/6379
    5. dbfilename s21redis.rdb #rdb持久化文件s21redis.rdb
    6. bind 127.0.0.1 #redis绑定地址
    7. #save 900 1 #
    8. #save 200 10 #在200秒中内,超过10个修改类的操作
    9. save 20 2 #
    • 创建文件夹 data/6379
    1. [root@xujunk s21redis]#mkdir -p /data/6379/
    • 开启redis-server
    1. [root@xujunk s21redis]#redis-server s21_rdb.conf
    2. 查看启动状态:
    3. [root@xujunk s21redis]#ps -ef |grep redis
    4. """
    5. root 22057 1 0 17:14 ? 00:00:00 redis-server 127.0.0.1:6379
    6. """
    • 启动redis-cli端,并进行操作
    1. [root@xujunk redis-4.0.10]#redis-cli
    2. #咱们设置save 为20秒内 操作2次。所以这里最少操作2次
    3. [root@xujunk redis-4.0.10]#set name haha
    4. [root@xujunk redis-4.0.10]#set name2 haha
    • 查看存储为位置:
    1. [root@xujunk s21redis]#ls /data/6379
    2. redis.log s21redis.rdb
    3. #此时生成2个文件。
    • 杀死所有redis
    1. pkill -9 redis
    • 再次进入redis
    1. [root@xujunk s21redis]#redis-server s21_rdb.conf
    2. [root@xujunk s21redis]#redis-cli
    3. 127.0.0.1:6379> keys *
    4. 1) "name2"
    5. 2) "name3"
    6. #此时数据达到持久化存储

2.第二个机制:AOF机制

  • AOF机制,将你的修改类操作命令,追加到日志文件中

    • 记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集
  • AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾,追加文件方式。
    • 优点:最大程序保证数据不丢,RDB在没有触发save机制之前就宕机了,那么数据就没了。
    • 缺点:日志记录非常大
  • 追加文件:用在文件末尾追加记录的方式,对Redis写入的数据,依次进行持久化,所以它的持久化是更加安全的。

  • 此外,它还提供一个用appendfsync选项设置fsync的策略,确保写入的数据都落到磁盘中,具体选项包括always,everysec,no等。

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

    1. appendonly yes
    2. appendfsync always 总是修改类的操作
    3. everysec 每秒做一次持久化
    4. no 依赖于系统自带的缓存大小机制
  • AOF存储示例

    • 创建配置文件并且编辑配置:

      1. [root@xujunk s21redis]#touch s21_aof.conf
      2. [root@xujunk s21redis]#vim s21_aof.conf
      3. daemonize yes
      4. port 6379
      5. dir /data/6379
      6. appendonly yes
      7. appendfsync everysec
      8. logfile /data/6379/redis.log
    • 以自己配置文件 启动redis

      1. [root@xujunk 6379]#redis-server /opt/s21redis/s21_aof.conf
      2. [root@xujunk 6379]#ls
      3. appendonly.aof redis.log
      4. #此时6379目录生成2个文件。实时存储
      5. #实时监控存储数据文件
      6. [root@xujunk 6379]#tail -f appendonly.aof
      7. #另起一个窗口启动客户端,操作redis
      8. [root@xujunk s21redis]#redis-cli
      9. 127.0.0.1:6379> set name "www"
      10. OK
      11. #监控客户端实时输出存入结果:
      12. *2
      13. $6
      14. SELECT
      15. $1
      16. 0
      17. *3
      18. $3
      19. set
      20. $4
      21. name
      22. $3
      23. www
  • redis 持久化方式有哪些?有什么区别?

    1. rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能
    2. aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysqlbinlog

3.redis持久化rdb切换aof备份

  • 本文在redis4.0中,通过config set命令,达到不重启redis服务,从RDB持久化切换为AOF

  • 查看redis版本

    1. [root@xujunk s21redis]#redis-server -v
    2. Redis server v=4.0.10 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=f4e8cdb9b08f1cb0
  • rdb模式下的redis持久化,不重启切换为 aof模式

    • 手动操作:

      1. redis内切换:
      2. config set appendonly yes
      3. config set save ""
    • 环境准备:更改s21_rdb.conf配置

      1. #准备rdb配置文件
      2. daemonize yes
      3. port 6379
      4. logfile /data/6379/redis.log
      5. dir /data/6379 #定义持久化文件存储位置/data/6379
      6. #dbfilename s21redis.rdb #rdb持久化文件s21redis.rdb
      7. bind 127.0.0.1 #redis绑定地址
      8. #save 900 1 #
      9. #save 200 10 #在200秒中内,超过10个修改类的操作
      10. save 20 2
      11. appendonly yes
      12. appendfsync always
    • 删除rdb保存文件

      1. [root@xujunk 6379]#rm -rf dump.rdb
    • 重启redis server端部

      1. [root@xujunk 6379]#redis-server /opt/s21redis/s21_rdb.conf
    • 启动客户端

      1. [root@xujunk 6379]#redis-cli
      2. 127.0.0.1:6379> keys *
      3. 1) "name"
      4. #在没有重启redis-server端实现RDB---->AOF(切换)
    • 详情看博客:https://www.cnblogs.com/pyyu/p/10061526.html
    • 注意想要永久切换为aof,还得修改配置文件方可

原文链接:http://www.cnblogs.com/xujunkai/p/11563672.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号