Redis实战(3)——缓存模型与缓存更新策略

1 什么是缓存?

缓存 就是数据交换的缓冲区, 是存贮数据的临时区,一般读写性能较高 \textcolor{red}{是存贮数据的临时区,一般读写性能较高} 是存贮数据的临时区,一般读写性能较高。缓存可在多个场景下使用

以一次 w e b 请求为例,演示不同阶段的缓存作用 \textcolor{blue}{以一次web请求为例,演示不同阶段的缓存作用} 以一次web请求为例,演示不同阶段的缓存作用

  • web开发时:浏览器发送请求时通常会缓存不经常变更静态文件,如css、js文件。浏览器缓存无需每次请求进行加载,降低网络延迟,提升响应速度
  • 应用层缓存:请求到达Tomcat 服务器时,常用redis【具有优秀的读写能力,延迟在毫秒级别】作为缓存,可缓存经常从数据库中获得的数据。
  • 数据库缓存:应用层缓存未命中时,请求到达数据库,任然可以针对数据库方面做缓存处理,SQL语句相同的查询结果会被缓存下来
  • CPU、磁盘缓存:DB的操作需要进行磁盘的读写以及cpu 的计算,可使用CPU缓存以及磁盘缓存

2 Redis 缓存模型

由于redis是基于内存实现的数据库,数据的读写快,且可以将redis做为集群部署,意味着高可用。所以通常可用redis数据库作为应用程序的缓存区。其缓存模型如下

(1)请求从客户端发出,经由redis时,命中则直接缓存,

(2)请求从客户端发出,经由redis时,未命中缓存,需要经过数据库处理【低效】,获得数据后写入缓存

(3) 随着请求的不断发出,redis累计的缓存数据越来越多,请求直接命中redis缓存的几率增大,大大减少了数据库的低效操作。

R e d i s 缓存是把双刃剑 \textcolor{red}{Redis缓存是把双刃剑} Redis缓存是把双刃剑 ,尽管他能降低后端的负载、提升程式的性能。但是在 数据一致性成本变高 \textcolor{blue}{数据一致性成本变高} 数据一致性成本变高。且由于使用redis数据库,其运维成本变高。

3 Redis 缓存更新策略

为了使得缓存中的数据与DB中的数据保持一致,需要介绍redis缓存的更新策略

内存淘汰 超时剔除 主动更新
说明 不用自己维护,利用redis的内存淘汰机制。当内存不足时自动淘汰部分数据,下次查询时更新缓存 给缓存数据添加TTL时间,到期后自动删除缓存,下次查询时更新缓存 编写业务逻辑,在修改数据库的同时,更新缓存
一致性 差【淘汰时间不确认,由redis底层决定】 一般
维护成本

在实际选用缓存更新策略时,需要根据业务场景来选择

业务场景

  1. 低一致性需求: 使用内存淘汰机制,
  2. 高一致性需求:主动更新,并以超时剔除作为兜底解决方案
相关推荐
小刘在重生~3 分钟前
Java 常用类|包装类 装箱拆箱、Integer 缓存面试题
java·python·缓存
右耳朵猫AI34 分钟前
Go周刊2026W36 | Go 1.27.1 发布、TinyGo 0.42、HTTP/2 原生迁入 net/http、quic-go 0.62
redis·http·golang
极小狐7 小时前
CI 流水线提速实战:缓存设计与依赖代理的工程实践
缓存·ci/cd·gitlab·devops
莫得感情 o8 小时前
Redis 09 · 高可用:Sentinel 如何发现故障并完成切主
redis·缓存·sentinel
考虑考虑9 小时前
Redis8.8新特性
运维·redis·后端
BUG研究员_9 小时前
LangGraph节点缓存-CachePolicy
python·缓存·langraph
tryxr10 小时前
Redis 的背景知识
数据库·redis·缓存
莫得感情 o11 小时前
Redis 08 · 主从复制:全量同步、增量同步与复制延迟
redis·缓存
BUG指挥官11 小时前
Redis已接入AI
数据库·人工智能·spring boot·redis·spring cloud
醉颜凉20 小时前
Redis网络层解析:高性能服务器架构设计与实现
redis·epoll·网络架构·i/o多路复用·事件驱动