缓存更新策略

缓存更新是Redis为了节约内存而设计出来的一个东西,主要是因为内存数据宝贵,当我们向redis插入太多数据,此时就可能会导致缓存中的数据过多,所以redis会对部分数据进行更新,或者淘汰。

1.缓存更新策略

1.1.内存淘汰

redis自动进行,当redis内存达到咱们设定的max-memery的时候,会自动触发淘汰机制,淘汰掉一些不重要的数据(可以自己设置策略方式)

1.2超时剔除

当我们给redis设置了过期时间TTL之后,redis会将超时的数据进行删除,方便咱们继续使用缓存

1.3.主动更新

我们可以手动调用方法把缓存删掉,通常用于解决缓存和数据库不一致问题

2.三种策略的区别

|------|-------------------------------------------------|-----------------------------------|------------------------|
| | 内存淘汰 | 超时剔除 | 主动更新 |
| 特点 | 不用自己维护,利用Redis的内存淘汰机制,当内存不足时自动淘汰部分数据。下次查询时更新缓存。 | 给缓存数据添加TTL时间,到期后自动删除缓存。下次查询时更新缓存。 | 编写业务逻辑,在修改数据库的同时,更新缓存。 |
| 一致性 | 差 | 差 | 好 |
| 维护成本 | 无 | 低 | 高 |

2.1使用场景

**低一致性需求:**使用内存淘汰机制。例如店铺类型的查询缓存

**高一致性需求:**主动更新,并以超时剔除作为兜底方案。例如店铺详情查询的缓存

相关推荐
再难也得平3 分钟前
[LeetCode刷题]49.字母异位词分组(通俗易懂的java题解)
java·开发语言·leetcode
黎雁·泠崖9 分钟前
Java 时间类(中):JDK8 全新时间 API 详细教程
java·开发语言
时艰.13 分钟前
电商项目支付宝支付实战
java·服务器·网络
Coder_Boy_29 分钟前
Java高级_资深_架构岗 核心知识点——高并发模块(底层+实践+最佳实践)
java·开发语言·人工智能·spring boot·分布式·微服务·架构
yy.y--37 分钟前
Java线程实现浏览器实时时钟
java·linux·开发语言·前端·python
笨蛋不要掉眼泪40 分钟前
Sentinel 流控规则详解:三种模式与三种效果实战指南
java·jvm·数据库·后端·sentinel
echoVic41 分钟前
给 Agent Skill 装上「黑匣子」:STOP 可观测性协议设计与实现
java·javascript
阿乐艾官1 小时前
【K8s思维导图及单节点容器启动流程】
java·容器·kubernetes
再难也得平1 小时前
[LeetCode刷题]1.两数之和(java题解)
java·算法·leetcode
yaoxin5211231 小时前
327. Java Stream API - 实现 joining() 收集器:从简单到进阶
java·开发语言