软考:缓存持久化和过期策略,淘汰策略

devtools/2024/11/14 11:12:12/

持久化:

RDC(把全量数据以二进制压缩文件的方式存储到磁盘文件),快照,体积小,性能更高(会fork一个子进程来处理保存操作)恢复更快。
AOF(每一个写命令都通过write函数追加到文件中,日志记录),近乎实时的方式把执行的每条数据变动命令进行追加存储到AOF的缓存区里面, 然后再把缓存的数据写入到磁盘的AOF文件里面。数据不会丢失,AOF文件写入性能很高,AOF文件不会影响客户端的读写,通过非常可读的方式记录,适合做灾难性的误删除的紧急恢复。比如某人不小心使用flushall命令清空了所以记录。

RDB的优缺点

优点:
适合做定时备份(冷备)
RDB的数据恢复快

缺点:
RDB无法做到实时持久化,若在两次bgsave间宕机,则会丢失区间(分钟级)的增量数据,不适用于实时性要求较高的场景
RDB的cow机制中,fork子进程属于重量级操作,并且会阻塞redis主进程(执行客户端命令的线程)

AOF的优缺点

优点:
AOF是近乎实时,一秒一次去通过一个后台的线程fsync操作,最多只会丢这一秒的数据,适合做实时备份(热备)
AOF只是追加写日志文件,对服务器性能影响较小,速度比RDB要快,消耗的内存较少

缺点:
AOF方式生成的日志文件太大,需要不断AOF重写,进行瘦身。
AOF重演命令式的恢复数据,速度显然比RDB要慢

redis的过期策略

1、定期删除
分为记录到期实际,到期就删除
另外一种是每间隔一段时间,检查key,删除过期的key

2、惰性删除
占内存,CPU友好

redis:支持上面两种方式的结合!!!
随机抽取一些设置了过期时间的key,检查是福哦过期,如果过期就删掉,可能导致很多过期的key到了时间并没有被删除。

Redis提供了8种淘汰策略

不淘汰
noeviction:不进行淘汰数据。一旦缓存被写满,再有写请求进来,Redis就不再提供服务,而是直接返回错误。

从全部数据中进行淘汰
allkeys-lru:在所有的键值对中,移除最近最少使用的键值对
allkeys-lfu:在所有的键值对中,移除最近最不频繁使用的键值对。
allkeys-random:在所有键值对中,随机移除某个key。

从设置了过期时间的数据中进行淘汰
volatile-ttl:在设置了过期时间的键值对中,移除即将过期的键值对。
volatile-lru:在设置了过期时间的键值对中,移除最近最少使用的键值对。
volatile-lfu:在设置了过期时间的键值对中,移除最近最不频繁使用的键值对。
volatile-random:在设置了过期时间的键值对中,随机移除某个键值对。

策略推荐:
通常情况下推荐优先使用 allkeys-lru 策略。这样可以充分利用 LRU 这一经典缓存算法的优势,把最近最常访问的数据留缓存中,提升应用的访问性能。
如果你的业务数据中有明显的冷热数据区分,建议使用 allkeys-lru 策略。
如果业务应用中的数据访问频率相差不大,没有明显的冷热数据区分,建议使用 allkeys-random 策略,随机选择淘汰的数据就行。
如果没有设置过期时间的键值对,那么 volatile-lru,volatile-lfu,volatile-random 和 volatile-ttl 策略的行为, 和 noeviction基本上一致。


http://www.ppmy.cn/devtools/133909.html

相关文章

行业类别-智能制造-子类别工业4.0-细分类别物联网应用-应用场景智能工厂建设

1.大纲分析 针对您提出的题目“4.0 行业类别-智能制造-子类别工业4.0-细分类别物联网应用-应用场景智能工厂建设”,以下是一个详细的大纲分析,旨在深入探讨该应用场景下的各个方面: 一、引言 智能制造与工业4.0概述 智能制造的定义与发展趋…

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪BD311R 发布时间: 2024-10-23 11:28:42 一、 产品图片: 二、 产品特性: 4G性能:支持2K超高清图传,数据传输不掉帧,更稳定。 独立北…

Enhanced Table如何安装?

githup项目地址: https://github.com/fbaligand/kibana-enhanced-table/releases/tag/v1.12.0

mysql 几种启动和关闭mysql方法介绍

https://dev.mysql.com/doc/refman/5.7/en/programs-server.html mysql几种启动方法 方法1、mysqld mysqld指定读取my.cnf配置文件启动,加一个 & 实现后台启动。终端不会被阻塞 ./mysqld --defaults-file/etc/my.cnf &方法2、mysqld_safe ./mysqld_safe –d…

分享 | 中望3D 2025发布会提及的工业数字化MBD是什么?

本文为CAD芯智库原创,未经允许请勿复制、转载! 原文转自:www.xwzsoft.com/h-nd-487.html 今年中望CAD/中望3D 2025版新品发布会上,中望产品规划与GTM中心总监胡其登先生的专题演讲——《基于模型的CAx一体化研发管理平台&#xff…

【go从零单排】HTTP客户端和服务端

🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,net/http 包提供了强大的 HTTP 客户端和服务器功能。 &…

植物大战僵尸杂交版v2.6.1最新版本(附下载链接)

B站游戏作者潜艇伟伟迷于11月3日更新了植物大战僵尸杂交版2.6.1版本!!!,有b站账户的记得要给作者三连关注一下呀! 不多废话下载链接放上: 夸克网盘链接:https://pan.quark.cn/s/279e7ed9f878 新…

WebSocket和HTTP协议的性能比较与选择

WebSocket和HTTP协议的性能比较与选择 引言: 在web应用开发中,无论是实时聊天应用、多人在线游戏还是实时数据传输,网络连接的稳定性和传输效率都是关键要素之一。目前,WebSocket和HTTP是两种常用的网络传输协议,它们…