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

Redis知识整理


缓存:
1.缓存的过期策略:
a.内存淘汰策略,一致性差、无维护成本
b.超时剔除策略,一致性一般、维护成本低
c.主动更新策略,一致性高、维护成本高
2.内存淘汰策略:
volatile-lru: 从设置了过期时间的数据集中,移除最近最少使用的数据。
allkeys-lru: 从所有数据集中,移除最近最少使用的数据。
volatile-lfu: 从设置了过期时间的数据集中,移除最不常使用的数据。
allkeys-lfu: 从所有数据集中,移除最不常使用的数据。
volatile-random: 从设置了过期时间的数据集中,随机移除数据。
allkeys-random: 从所有数据集中,随机移除数据。
volatile-ttl: 从设置了过期时间的数据集中,移除即将过期的数据。
noeviction: 不移除任何数据,当内存满时,返回错误。该策略通常不建议使用,因为它可能导致无法写入新数据。
3.常用的缓存策略有以下五种:
Cache-Aside Pattern:旁路缓存模式
a.程序读取缓存信息,若缓存不存在,则去数据库读取缓存,读到数据后写入缓存,然后在返回;
b.程序修改数据,则先修改数据库,再删除缓存;
Read Through Cache Pattern:读穿透模式
a.程序直接从缓存系统中读取数据,不关心数据来源(是从缓存中还是数据库中来的数据),
若缓存系统中没有数据,则缓存系统负责去读取数据,然后写入缓存系统,进行返回;
Write Through Cache Pattern:写穿透模式
a.程序更新数据都是通过缓存系统,缓存系统需要维护两份数据,一份是缓存,一份是数据库,
缓存系统在一个事务里面保证缓存和数据库都写入成功,才算正真的成功。
b.写穿透模式通常伴随着读穿透模式
c.适用场景:需要频繁读取相同数据、不能忍受数据丢失(相对Write-Behind而言)和数据不一致
Write Behind Pattern:又叫Write Back,异步缓存写入模式
a.与写穿透模式很像,不同点在于写数据库是异步的,有可能是定时任务触发,也有可能是一个异步请求进行操作。
4.先更新数据,在删除缓存,避免数据不一致性问题;
5.缓存穿透:
a.往缓存中写入空值,并且设置过期时间,避免缓存穿透
b.布隆过滤器:
原理:通过三个hash函数对其进行计算,比如分别得到 2, 3, 7,增设置对应的下标为1,当查询时,先查询布隆过滤器,若不存在,
则数据库一定不存在,若存在,则数据库可能不存在
其他方案:
ID设置复杂点,避免被猜到ID
做好数据格式的校验,剔除非法数据
加强用户权限校验,根据用户权限,对用户进行合理限流
做好热点数据限流,对短期类发送大量请求的用户进行限流
6.缓存击穿:
互斥锁:
优点:没有额外的内存消耗、保证了一致性、实现简单
缺点:线程需要等待,性能受到了影响、可能导致死锁
逻辑过期:  
优点:线程无需等待,性能较好
缺点:不保证一致性、有额外的内存消耗、实现复杂

http://www.dtcms.com/a/334514.html

相关文章:

  • 【论文笔记】STORYWRITER: A Multi-Agent Framework for Long Story Generation
  • 云服务平台主流架构的相关知识体系剖析
  • ABM和强化学习-2015年全国大学生数学建模竞赛B题
  • 安卓11 12系统修改定制化_____修改系统 解锁system分区 去除data加密 自由删减系统应用
  • JetPack系列教程(七):Palette——让你的APP色彩“飞”起来!
  • sql链接的url中serverTimezone的作用
  • 【大模型微调系列-04】 神经网络基础与小项目实战
  • windows环境下使用vscode以及相关插件搭建c/c++的编译,调试环境
  • GIMP:功能强大的跨平台图像处理软件
  • 嵌入式硬件篇---电容本质
  • leetcodehot100 矩阵置零
  • Jenkins安装部署(Win11)和常见配置镜像加速
  • B3837 [GESP202303 二级] 画三角形
  • csrf攻击
  • 11、软件需求工程
  • AMD Ryzen AI Max+ 395四机并联:大语言模型集群推理深度测试
  • 智能二维码刷卡人脸识别梯控控制器硬件规格书​
  • 【C++】高效资源管理四剑客:RVO、NRVO、std::move、RAII 深度解析
  • 【3D重建技术】如何基于遥感图像和DEM等数据进行城市级高精度三维重建?
  • 【Vibe Coding 工程之 StockAnalyzerPro 记录】- EP3.Phase 2股票列表管理功能
  • Font shape `TU/ptm/m/n‘ undefined(Font) using `TU/lmr/m/n‘ instead
  • UE5多人MOBA+GAS 45、制作冲刺技能
  • Business Magic
  • [创业之路-550]:公司半年度经营分析会 - 解决方案汇总
  • 【Java web】Servlet 详解
  • Linux -- 文件【下】
  • MATLAB R2010b系统环境(二)MATLAB环境的准备
  • 基于Transformer的机器翻译——模型篇
  • 力扣面试150(57/100)
  • 罗技MX Anywhere 2S鼠标修复记录