如何实现多级缓存?

本文重点说一说在Java应用中,多级缓存如何实现。

多级缓存是比较常见的一种性能优化的手段,一般来说就是本地缓存+分布式缓存。

本地缓存一般采用Caffeine和Guava,这两种是性能比较高的本地缓存的框架。他们都提供了缓存的过期、管理等功能。

分布式缓存一般采用Redis、Memcached等分布式缓存框架。

在做多级缓存的方案中,会先查询本地缓存,如果本地缓存查不到,再查询分布式缓存。并且在分布式缓存中查询到之后保存到本地缓存中一份。

有些特殊场景,如黑名单场景,本地缓存也会用boomfilter来充当,因为bloom filter是有假阳性的特性的,所以命中后需要在查一次分布式缓存,如果没命中则直接返回。

一致性问题

使用多级缓存,比较大的问题就是一致性如何保证,因为用到了本地缓存,而一个集群中有很多台服务器,每个服务器上面的本地缓存内容都不一样。

这个是使用本地缓存的最大的劣势了,但是这个问题是在提升性能的情况下不可避免的带来的副作用。

相关推荐
福大大架构师每日一题7 小时前
agno v2.9.0发布:身份感知调度、缓存隔离、安全加固与组件重建全面升级
安全·缓存
零域码客15 小时前
Redis 双刃剑:缓存与分布式锁的本质区别
redis·分布式·缓存·并发控制·后端架构
野生技术架构师2 天前
Redis 和 MySQL 如何保证数据一致性?先更新数据库还是先删缓存,延迟双删、MQ、Canal 一次讲透
数据库·redis·缓存
愈努力俞幸运2 天前
token,context window,top_p,temperature,skill,Harness Engineering
数据库·redis·缓存
Patrick在香港2 天前
Claude API 成本直降90%:Prompt Caching 提示词缓存 Python 实战
python·缓存·prompt
NeilYuen2 天前
【vemory】高性能KV存储AOF方案设计
linux·c++·redis·缓存
LuminousCPP3 天前
数据结构基础篇(二):顺序表与链表全方位对比|从内存布局到 CPU 缓存理解底层差异
c语言·数据结构·经验分享·链表·缓存
spter。3 天前
Redis 与 Single-flight 的分工与协作
数据库·redis·缓存
清水白石0083 天前
Python 如何设计一个线程安全的缓存?从锁策略、LRU 到工程化实战
python·安全·缓存
小宋10213 天前
大模型应用如何控制成本与延迟:Token、缓存、流式和降级实战
人工智能·缓存