Rides的持久化及其原理
一、 持久化介绍
1.什么是持久化
利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。
2.怎样保证持久化
Redis 为了保证效率,数据缓存在了内存中,但是会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件中,以保证数据的持久化。
其实对应的就是Redis的俩种持久化策略:
1.快照:RDB(Reids周期性的把更新的数据写入磁盘)
2.日志:AOF(将Reids的操作日志以追加的方式写入文件)
作用: 防止数据的意外丢失,确保数据安全性
二、RDB 快照
可以从RDB的启动方式去认识RDB的运行机制
1.RDB启动方式
1.1RDB启动方式 —— save指令
指令:save
手动执行一次保存操作
save指令相关配置
(可以在redis的配置类里redis.conf里进行 通常每个端口我们指定一个相应的redis.conf)比如:
vi redis-6379.conf
1)dbfilename dump.rdb-----设置本地数据库文件名,默认值为 dump.rdb (加上端口)
2) dir -----设置存储.rdb文件的路径
3) rdbcompression yes -----设置存储至本地数据库时是否压缩数据,默认为 yes,采用 LZF 压缩
(通常默认为开启状态,如果设置为no,可以节省 CPU 运行时间,但会使存储的文件变大(巨大))
4)rdbchecksum yes ----设置是否进行RDB文件格式校验,该校验过程在写文件和读文件过程均进行
(通常默认为开启状态,如果设置为no,可以节约读写性过程约10%时间消耗,但是存储一定的数据损坏风险 )
save指令工作原理
单线程任务执行序列
数据量过大save执行会阻塞当前Redis服务器,直到当前RDB过程完成为止,有可能会造成长时间阻塞,线上环境不建议使用。