缓存更新策略

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

1.缓存更新策略

1.1.内存淘汰

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

1.2超时剔除

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

1.3.主动更新

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

2.三种策略的区别

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

2.1使用场景

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

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

相关推荐
jiayong23几秒前
Spring AI Alibaba 深度解析(一):框架概述与核心功能
java·人工智能·spring
AAA简单玩转程序设计几秒前
Java 异常处理:3 个 “避坑神操作”,告别崩溃式报错
java
徐老总1 分钟前
圆形(Circle)和矩形(Rectangle)两个样例类
java
一只努力的微服务4 分钟前
【Calcite 系列】将 INTERSECT 转换为 EXISTS
java·calcite
向往着的青绿色4 分钟前
编程式事务,更加精细化的控制
java·开发语言·数据库·spring·性能优化·个人开发·设计规范
共享家95278 分钟前
Redis背景知识
数据库·redis·缓存
ホロHoro16 分钟前
数据结构非线性部分(1)
java·数据结构·算法
沉下去,苦磨练!28 分钟前
实现二维数组反转
java·数据结构·算法
桦说编程36 分钟前
实现一个简单的并发度控制执行器
java·后端·性能优化
Spring AI学习1 小时前
Spring AI深度解析(11/50):异常处理与容错机制实战
java·人工智能·spring