redis持久化
- redis持久化机制
说明:redis默认有持久化的机制.按照指定的配置,定期将内存中的数据持久化到硬盘中.当redis重启时首先根据配置文件中的设置,读取持久化的文件,最终实现了数据的恢复.
- RDB模式
1.特点
- RDB模式是redis中默认的持久化策略.
- RDB模式能够定期实现数据的持久化.(可能会丢失数据)
- RDB模式中默认的持久化的文件名称dump.rdb
- RDB的持久化操作,只做内存数据的快照.持久化文件占用空间较小.
- RDB模式持久化的效率最高
2.持久化命令
-
save 立即持久化 其他操作会陷入阻塞 同步操作 默认
-
bgsave 后台启动持久化操作 在后台运行 不会阻塞 异步操作.
3.持久化配置策略
1.持久化策略
save 900 1 900秒内如果执行1此更新操作,则持久化一次
save 300 10 300秒内如果执行10此更新操作,则持久化一次
save 60 10000 60秒内执行10000此更新操作,持久化一次
save 1 1 效率太低.
- AOF模式
1.特点
- AOF模式默认是关闭的,需要手动开启.
- AOF模式是异步操作.可以实现实时持久化.
- AOF模式记录用户的操作过程.所以持久化文件较大.
- AOF模式效率低.
2.AOF模式配置
3.AOF模式策略
appendfsync always 如果用户更新redis则持久化
appendfsync everysec 每秒持久化一次
# appendfsync no 将持久化的时间交给操作系统
redis内存策略
- 策略说明
redis中的数据保存在内存中.如果一直存储数据,不及时清空数据,必然会导致内存溢出.redis服务停止.所以需要定期清空数据.
- 内存优化策略
1.LRU算法
LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。
2.LFU算法
LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。
- 策略选择
- volatile-lru 在设定超时时间的数据中使用LRU算法删除数据
- allkeys-lru 所有数据都采用LRU算法删除.
- volatile-lfu 设定超时时间的数据中采用LFU算法
- allkeys-lfu 所以数据采用LFU
- volatile-random 设定超时时间的数据随机删除
- allkeys-random 所有数据随机删除
- volatile-ttl 根据剩余时间多少删除数据(先删除少的)
- noeviction(默认策略) 不会自动删除数据.内存溢出时报错返回.