11.扩展知识-redis持久化

内存(兔子):高效、断电数据就会消失

硬盘(乌龟):读写速度慢于内存的,断电数据依旧存在

持久化把数据保存在硬盘上

关系型数据库MySQL-持久化

任何增删改语句都是在硬盘上做的操作

断电以后硬盘上的数据还是存在

非关系型数据库redis

默认情况下所有的增删改数据都是在内存中进行操作

断电以后内存中的数据不存在的

断电以后,redis部分数据会丢失,丢失的数据是保存在内存中的数据。

概述

Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。
Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用。


1、RDB持久化(默认支持,无需配置)该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。

2、AOF持久化
该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。
3、无持久化
我们可以通过配置的方式禁用Redis服务器的持久化功能,这样我们就可以将Redis视为一个功能加强版的memcached了。
4、redis可以同时使用RDB和AOF

RDB

RDB:redis的默认持久化机制

RDB相当于照快照保存的是一种状态

20G数据----kb快照

优点

①快照保存数据速度极快,还原数据速度极快

适用于灾难备份(例如失火了,我们可以赶紧使用Upan拷贝走rdb文件)

缺点

①小内存机器不适合使用。

RDB机制符合要求就会照快照。(随时随地启动),会占用一部分系统资源(突然的),很可能内存不足直接宕机。(宕机后,服务器会关闭,非正常关闭,此前没有快照的数据会丢失

适用于内存比较充裕的计算机

RDB何时进行照快照

服务器正常关闭时会照一次快照   ./bin/redis-cli shutdown

②key满足一定条件会照一次快照

配置"key满足一定条件"-->redis.config

打开配置文件-->:进入地行模式-->输入"/save 900 1"回车定位到下面的位置:

说明:

save 900 1 #900(15分钟)至少有1key发生变化,则dump内存快照。

save 300 10 #300(5分钟)至少有10key发生变化,则dump内存快照

save 60 10000 #60(1分钟)至少有10000key发生变化,则dump内存快照

key发生变化key数据添加、修改、删除)

例如112:00 – 12:15  ,1key发生变化,在12:15就照一次快照保存

    12:00 – 12:15  ,没有任何key发生变化,在12:15不会照快照

例如212:00 – 12:05  ,10个(及以上)key发生变化,12:05就照一次快照保存

12:00 – 12:05  ,9key发生变化,12:05不会照快站,12:15 会照快照

例如3:  12:00 – 12:01  ,15000key发生变化,12:01会照一次快照保存

12:00 – 12:01  ,1000key发生变化,12:01不会照快站,12:05会照快照

AOF

AOF: 使用日志功能保存数据操作

 默认AOF机制关闭的

  每秒同步(默认):每秒进行一次AOF保存数据。               安全性低比较节省系统资源

每修改同步:只要有key变化语句,就进行AOF保存数据。比较安全,但是极为浪费效率

不同步:不进行任何持久化操作                不安全

AOF操作

只会保存导致key变化的语句

 AOF配置

always    #每次有数据修改发生时都会写入AOF文件

everysec  #每秒钟同步一次,该策略为AOF的缺省策略

no       #从不同步。高效但是数据不会被持久化

 

开启AOF机制:

 生成备份文件位置:

策略的选择:

 测试:

 查看aof文件:

优点

①持续性占用极少量的内存资源

缺点

①日志文件会特别大,不适用于灾难备份(失火了拷贝不完...)

恢复效率远远低于RDB

适用于内存比较小的计算机

原文地址:https://www.cnblogs.com/luzhanshi/p/13364131.html