redis持久化策略

1.RDB模式

  1. RDB模式是redis的默认的持久化策略.
  2. RDB模式的持久化效率是最高的
  3. RDB模式是定期备份 风险:可能会丢失数据
  4. RDB模式做的是内存数据的快照,持久化文件占用空间较小.

1.1 RDB模式配置策略

  1. save 表示主动进行持久化操作. 影响:如果执行save操作,则不允许用户执行set等更新操作.用户陷入阻塞.
  2. bgsave 表示后台运行持久化操作(异步操作),这时不会影响用户set等更新操作.但是持久化什么时候完成不能确定时间. (gc)
  3. 修改持久化文件名称
    redis持久化策略_第1张图片
  4. 持久化文件路径
    要求持久化文件在当前目录生成.
    redis持久化策略_第2张图片
    1.1.3.3 Redis持久化策略
    save 900 1
    save 300 10
    save 60 10000
  5. 如果用户在900秒内执行1次更新操作.则持久化一次.
  6. 如果用户在300秒内执行10次更新操作,则持久化一次.
  7. 60秒内持久化一次
    用户操作越频繁则持久化周期越短.

2 AOF模式

  1. AOF模式可以实现数据的实时持久化操作.
  2. AOF模式默认是关闭的.需要手动开启.
  3. AOF模式记录的是用户的执行过程,持久化文件占用空间大.持久化效率低.
  4. AOF模式持久化是异步操作.
    1.1.4.2 AOF模式配置策略
    1.开启AOF模式

1.1.4.3 持久化策略
#appendfsync always 只要用户执行更新操作 则持久化一次
appendfsync everysec redis1秒持久化一次
#appendfsync no 将持久化时间交给操作系统决定(20分钟)
1.1.5 关于AOF与RDB总结

  1. RDB模式与AOF模式可以同时存在.
  2. 默认条件下以AOF为主.
  3. 当程序执行save执行时才会执行RDB模式操作.

1.2 Redis内存策略
1.2.1 问题说明
如果redis内存被占满如何处理???
1.2.2 内存策略

  1. volatile-lru 将设定超时时间的数据采用LRU算法删除.
  2. allkeys-lru 将所有的数据采用LRU算法删除.
  3. volatile-lfu 将设定超时时间的数据采用LFU算法删除
  4. allkeys-lfu 将所有数据采用LFU算法删除
  5. volatile-random 将设定超时时间的数据 随机删除.
  6. allkeys-random 所有的数据都随机删除
  7. volatile-ttl 将设定超时时间的数据 按照剩余时间排序删除.
  8. noeviction 表示不删除数据,如果内存占满 报错返回.
    1.2.3 内存策略修改

1.2.4 LRU算法
LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最久未使用的页面予以淘汰。
1.2.5 LFU算法
常识:Redis5.0之后才有LFU算法!!!
LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。
least frequently used (LFU) page-replacement algorithm
即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。

你可能感兴趣的:(redis)