文章目录

  • 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读写性能,如果对数据要求安全性很高,则两个都可以开启。

内存管理-回收策略(重点)

redis 屏蔽命令行 redis关闭rdb_linux


redis 屏蔽命令行 redis关闭rdb_redis_02

  • 注意:为了提高垃圾回收的策略,LRU和TTL算法都不是精确的算法,而是一个近似的算法。
    就是他会根据探测样本的数量设置,来进行探测,然后根据探测到这几个进行淘汰。
    LRU:看命中率
  • redis 屏蔽命令行 redis关闭rdb_redis_03

  • 设置抽取的样本数量
  • 总结:
    默认的回收策略:默认不回收
    设置回收的算法,LRU,random,TTL
    算法不是精确的,而是采样的方式,可以设置采样的个数,默认是5个