reids是一个key-value存储系统,为了保证效率,缓存在内存中,但是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以保证数据的持久化。
所以:redis是一个支持持久化的内存数据库,可以将内存中的数据同步到磁盘保证持久化。
Redis的持久化策略:2种
---------rdb:快照形式是直接把内存中的数据保存到一个dump文件中,定时保存,保存策略
---------aof:把所有的对redis的服务器进行修改的命令都存到一个文件里,命令的集合
rdb:
默认情况下,是快照rdb的持久化方式,将内存中的数据以快照的方式写入二进制文件中,默认的文件名是dump.rdb
redis.conf配置:
默认是如上配置:900秒之内,如果超过1个key被修改,则发起快照保存;
300秒内,如果超过10个key被修改,则发起快照保存
1分钟之内,如果1万个key被修改,则发起快照保存
这种方式不能完全保证数据持久化,因为是定时保存,所以当redis服务down掉,就会丢失一部分数据,而且数据量大,写操作多的情况下,会引起大量的磁盘IO操作,会影响性能。
所以,如果这两种方式同时开启,如果对数据进行恢复,不应该用rdb持久化方式对数据库进行恢复。
AOF
使用aof做持久化,每一个写命令都通过write函数追加到appendonly.aof中.
配置方式:启动aof持久化的方式
两种持久化策略,各有各的优缺点,依需求而定。