文章目录
- Redis持久化机制
- Redis两种持久化方式
- RDB(Redis DataBase)
- AOF(Append Only File)
- 快照 VS 只追加文件
- 内存管理-回收策略(重点)
Redis持久化机制
- Redis会定期的把内存中的数据持久化到硬盘上,当reids服务关闭后,重启Redis会自动把硬盘的数据恢复到内存中继续使用。可以用shutdown命令关闭Redis服务来进行测试。
Redis两种持久化方式
- RDB(快照,默认的方式)
记录当前Reids一瞬间的内存结构,以文件的形式保存的硬盘上。
快照相关命令:
Save: – 手动进行快照,这个过程是前台快照,在执行的快照的的过程中,redis是拒绝写命令的。
bgsave: – 手动进行快照,这个过程是后台快照,Redis会启动一个新的线程执行快照,当前线程是接收执行写命令的(它是把写的命令放到缓存中) - AOF(只追加文件)
AOF把服务器执行的所有写(增删改)的命令记录在一个文件中,并在服务器启动时,通过重新执行这些命令来还原数据集,
RDB(Redis DataBase)
- 配置快照的频率,意思是900s之内有1个数据发送了变化就拍快照。
- 因为bgsave命令是启动一个新的线程执行快照,当前线程还是接收写命令的,如果新线程在执行快照的过程中出现错误是否停止写命令,默认是yes,这样用户可以感知到执行快照失败。
- dir ./ 快照文件存放的位置
rdbchecksum yes 回复快照时检查快照的完整性
dbfilename dump.rdb 快照文件的名称(可以把这个文件发送给别人,启动后缓存就会有的对应的数据)
AOF(Append Only File)
appendonly no # 是否开启只追加文件
appendfilename "appendonly.aof" # 只追加文件的名称
# 只追加文件记录评率
# appendfsync always # 每次执行写操作后记录到只追加文件中(绝对安全)
appendfsync everysec # 每秒中记录一次只追加文件(默认值)
# appendfsync no # 不主动记录只追加文件,需要手动记录
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb # 只追加文件的大小,超过64兆新建一个文件记录命令
aof-load-truncated yes # 如果最后一个命令出现文错误,是否丢弃。
快照 VS 只追加文件
快照:记录和回复的速度快,数据的安全性不高(因为他是按照时间来记录的)
只追加文件:记录和恢复的速度慢(命令一旦很多久执行慢),数据安全性高(因为最多只丢失1s的数据)
如果Reids只是作为缓存服务器话,快照和只追加文件都可以关闭,这样可以大大的提高Redis读写性能,如果对数据要求安全性很高,则两个都可以开启。
- 注意:为了提高垃圾回收的策略,LRU和TTL算法都不是精确的算法,而是一个近似的算法。
就是他会根据探测样本的数量设置,来进行探测,然后根据探测到这几个进行淘汰。
LRU:看命中率 - 设置抽取的样本数量
- 总结:
默认的回收策略:默认不回收
设置回收的算法,LRU,random,TTL
算法不是精确的,而是采样的方式,可以设置采样的个数,默认是5个