最近呢,我使用到redis的缓存这方面的知识,因此去加深了一下学习,故有一些积累的东西,在这里给你们分享一下;顺便也看成笔记通常的存在,以避免之后用到的时候,又去再次查找,难道本身记录的知识,它不香吗?java
运行环境: redis运行环境在计算机的内存中.若是redis服务器意外宕机,或者机房意外断电等.那么内存中的数据将会所有清空.势必形成业务数据的丢失. 稳定性太差。redis
并且因为Redis的数据都存放在内存中,若是没有配置持久化,redis重启后数据就全丢失了,因而须要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,能够从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另一种是AOF(append only file)持久化(原理是将Reids的操做日志以追加的方式写入文件)。数据库
持久化:能够将内存数据按照指定的规则保存到磁盘中.当redis重启时,根据配置文件中指定的持久化文件.实现数据的恢复.缓存
保存方式:服务器
1.多久保存一次?app
1.指定周期保存 2.实时保存异步
2.保存的是什么?性能
1.保存key-value结构 2.保存用户的操做记录学习
1.可能会丢失数据. 2.持久化文件太大.不易维护.日志
1.RDB模式是redis中默认的持久化的策略
2.RDB模式记录的是Redis的内存快照 记录速度更快
3.RDB模式是按期持久化.可能会致使少许的数据丢失.
4.若是用户能够容许少许的数据丢失,则首选RDB模式.由于RDB模式工做的效率最高.
1.save指令 将内存数据立刻持久化到硬盘中. 该操做是阻塞的. 持久化操做优先.
2.bgsave指令 后台执行持久化操做. 不能保证当即立刻持久化. 当服务器空闲时,会进行持久化操做.(内存不忙) 不会陷入阻塞.
3.RDB模式能够实现自动的持久化.
在redis的配置文件redis.conf中搜索save--:/save
,咱们将看见一下信息
save 900 1 900秒内执行1次set操做.则持久化一次. save 300 10 300秒内执行10次set操做.则持久化一次. save 60 10000 60秒内执行10000set操做.则持久化一次. #save 1 1 1秒内执行1set操做.则持久化一次 性能过低.
若是有特殊的需求,能够修改持久化策略.可是须要注意性能问题。
前面一列是行数,我相信你们都懂啊!
253 dbfilename dump.rdb 能够修改持久化文件的名称 263 dir ./ 持久化文件的位置 ./当前文件目录
1.AOF模式默认条件下是关闭的,须要手动开启.
2.AOF模式能够实现数据的实时持久化.
3.AOF模式,记录的是用户的操做的过程.以追加的形式添加到配置文件以后.
4.AOF模式的持久化是异步操做.不会影响用户的使用.用户使用不会陷入阻塞.
5.因为AOF模式记录的是用户的操做过程,因此持久化文件较大.恢复数据时间较长.
开启AOF模式
699 appendonly yes 703 appendfilename "appendonly.aof" 持久化文件名称
若是RDB模式和AOF模式同时存在,以AOF模式为主. 若是不想开启AOF模式须要将配置关闭.
699 appendonly no
appendfsync always 只要用户执行更新操做,就会持久化到文件中 appendfsync everysec 默认策略 表示每秒同步一次 appendfsync no 不主动持久化.
1.RDB模式持久化是同步的方式,AOF模式异步操做.
2.RDB模式记录的是内存数据的快照(只保留最新数据),
AOF模式记录的是用户的操做过程(持久化文件较大).
3.RDB模式可能会丢失少许数据.AOF模式能够实现实时持久化操做.保证数据"不丢失"
4.RDB模式性能更高.AOF模式运行更为稳定.可是恢复数据的时间较长,须要按期清理维护持久化文件.