当前位置: 首页 > news >正文

redis 持久化 与 键淘汰策略

redis运维核心: aof日志(全持久化 增量) 、 rdb(半持久化/全量备份) 、 键淘汰策略 、 高可用

1、Redis是基于内存的,一旦Redis重启/退出/故障,内存的数据将会全部丢失。故而有了持久化。
2、持久化:将内存中的数据存于磁盘中,有两种方式: RDB快照 与 AOF日志
3、Redis服务器在启动的时候,如果发现有RDB文件,就会自动载入RDB文件(不需要人工干预) 服务器在载入RDB文件期间,会处于阻塞状态,直到载入工作完成。
4、如果设置了 AOF 持久化并且 AOF 文件存在,则 Redis 优先选择加载 AOF 文件进行恢复。这意味着 Redis 将使用 AOF 文件重建数据库,而忽略 RDB 文件。

一、RDB(快照持久化)

1、在指定的时间间隔内生成一个包含 Redis 数据快照的二进制文件。该文件包含了数据库中所有数据的副本,包括键值对、过期时间等信息。
也可以手动执行,也可以根据服务器配置定期执行。
手动生成RDB文件: save 或 bgsave
6379> save :服务器不能接收任何请求,直到RDB文件创建完毕为止.
6379> bgsave :会开启一个线程,由线程来创建RDB文件,服务器进程可以继续接收请求。

root@02d2e002309c:/data# redis-cli INFO Persistence|grep -iw rdb_last_bgsave_status  //检查bgsave是否执行完
rdb_last_bgsave_status:ok    //OK 表示已经bgsave完毕

3、Redis可以通过这个文件还原数据库的数据。
关闭服务 > rdb文件至目录中 > 启动服务 (Redis 在还原期间会阻塞,并且无法响应其他命令请求。)

二、AOF日志(append-only-file)

AOF 当Redis服务器执行写命令的时候,将执行的写命令保存到AOF文件中。
需要定期减小Redis AOF 文件的体积时,
使用 :CONFIG REWRITE 或 BGREWRITEAOF 命令来手动减小文件

CLI 6379>  CONFIG REWRITE  //会立即触发 AOF Rewriting 进程,并且会阻塞其他客户端请求,直到重写过程完成。
或 CLI 6379> BGREWRITEAOF // 命令来执行 AOF Rewriting。 会在后台异步启动 AOF Rewriting 进程,不会阻塞其他客

户端请求。
2、再使用redis-cli INFO |grep -iwE aof_rewrite_in_progress 命令来查看进度,1表示进行中,0表示已完成

root@02d2e002309c:/data# redis-cli INFO |grep -iwE aof_rewrite_in_progress
aof_rewrite_in_progress:0

三、RDB与 AOF配置

RDB //save命令会进程阻塞 时间 修改次数 增量快照 save仅对rdb持久化有用

 save 900 1    //最近 900 秒(15 分钟)内至少有一个键被修改时,执行一次保存操作。save 300 10  //最近 300 秒(5 分钟)内至少有 10 个键被修改时,执行一次保存操作。save 60  10000  //最近 60 秒内至少有 10000 个键被修改时,执行一次保存操作。stop-writes-on-bgsave-error yes  //当启用了RDB且最后一次后台保存数据失败,Redis是否停止接收数据rdbcompression yes     //对于存储到磁盘中的快照,可以设置是否进行压缩存储。(LZF算法压缩,会消耗cpu)rdbchecksum yes       //是否使用CRC64算法来进行数据校验,会消耗一定的资源dbfilename dump.rdb   //文件名dir ./  				//路径(不带文件名)

AOF

appendonly no    				//是否打开 aof日志功能
no-appendfsync-on-rewrite yes 	//正在导出rdb快照的时候不要写aof
appendfsync	always				//设置 AOF 文件同步策略, always  / everysec  / no// always,默认,表示每个写命令都会立即被同步到磁盘,//everysec 每秒// no  并不主动触发将数据同步到磁盘。而是由操作系统决定何时将缓冲区中的数据刷新到磁盘。易丢失数据 
auto-aof-rewrite-percentage  100 // 设置 AOF 重写的触发百分比,默认为 100,表示当 AOF 文件大小超过上一次重写后大小的 100% 时触发重写。
auto-aof-rewrite-min-size  128MB  // 设置 AOF 重写的最小文件大小,默认为 64MB,只有当 AOF 文件大小超过该值时才会触发重写。

三、Redis 中键淘汰策略

maxmemory-policy:该参数用于设置键淘汰策略。可以使用以下值之一:

maxmemory-policy设置说明
maxmemory-policy volatile-lru已设置过期时间 的数据集中挑选 最近最少使用 的键进行淘汰。
maxmemory-policy volatile-ttl已设置过期时间 的数据集中挑选 剩余过期时间最短 的键进行淘汰。
maxmemory-policy volatile-random已设置过期时间 的数据集中 随机选择 键进行淘汰。
maxmemory-policy volatile-lfu已设置过期时间 的数据集中 选择最不经常使用 的键策略。
maxmemory-policy allkeys-lru所有数据集中 挑选 最近最少使用 的键进行淘汰。
maxmemory-policy allkeys-lfu所有数据集中 挑选 最不经常使用 的键策略淘汰。
maxmemory-policy allkeys-random所有数据集中 随机选择 键进行淘汰。
maxmemory-policy noeviction禁止淘汰 策略,当内存不足时,写入操作会报错。
maxmemory-policy allkeys-lfu|volatile-ttl组合策略: 首先按照 LFU 策略淘汰最不经常使用的所有键,然后再通过过期时间淘汰带有过期时间的键。
maxmemory-samples 10设置检查键的样本数量,默认值为 5。样本数量越多,淘汰策略的准确性越高。

注:

lru  最近最少使用
lfu  最不经常使用
random  随机选择
noeviction  禁止
http://www.lryc.cn/news/115765.html

相关文章:

  • PyCharm新手入门指南
  • 【图像去噪】基于混合自适应(EM 自适应)实现自适应图像去噪研究(Matlab代码实现)
  • [保研/考研机试] KY102 计算表达式 上海交通大学复试上机题 C++实现
  • 源码解析Collections.sort ——从一个逃过单测的 bug 说起
  • 一周 AIGC 丨苹果下架多款 AIGC 应用,阿里云开源通义千问 70 亿参数模型
  • tomcat虚拟主机配置演示
  • Nacos基本应用
  • UML的类图规则
  • uniapp实现微信小程序长按二维码扫码加群或好友
  • 轮转数组(每日一题)
  • jmeter使用步骤
  • Ts中泛型的理解与使用
  • uniapp使用eatchs雷达图
  • PostgreSQL jsonb
  • Spring系列四:AOP切面编程
  • VS+Qt+C++旅游景区地图导航源码实例
  • 回调函数和一般函数的区别
  • 使用vite创建Vue/React前端项目,配置@别名和Sass样式,又快又方便
  • 从前序与中序遍历序列构造二叉树,从中序与后序遍历序列构造二叉树
  • 【JS常见数据结构】
  • 算法基础之插入排序
  • InfoQ 分享
  • Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库
  • 人类与机器的分类不同
  • WEB安全-SQL注入,CSRF跨站伪造,OXX跨站脚本
  • 【HDFS】客户端读某个块时,如何对块的各个副本进行网络距离排序?
  • 【数字化处理】仿生假体控制中肌电信号的数字化处理研究(Matlab代码实现)
  • 谷歌推出Flax:JAX的神经网络库
  • PDF换行的难度,谁能解决?
  • 山东布谷科技直播程序源码使用Redis进行服务器横向扩展