-
Notifications
You must be signed in to change notification settings - Fork 47
洪钊桦 edited this page Apr 21, 2019
·
5 revisions
Java的缓存类型分为堆内缓存和堆外缓存两种.
类型 | 优势 | 劣势 |
---|---|---|
堆内缓存 | 读写无需序列化与反序列化,速度快 | 会受到JVM的限制(GC时间与堆空间) |
堆外缓存 | 不受到JVM的限制,通过硬盘与网络达到接近无限的容量 | 读写需要序列化与反序列化,速度慢 |
缓存模式分为Cache Aside与Cache as Record两种.
- Cache Aside顾名思义,即由代码维护缓存;
读/写穿透(Read/Write-Through)
读场景,尝试从缓存读取数据,如果失败,则从记录获取数据并添加到缓存中(自动过期);
写场景,尝试将数据写到记录,如果成功,则将数据从缓存中移除(手动过期);
- Cache as Record顾名思义,即将缓存当记录(某种数据源),由框架负责维护缓存与记录之间的一致性;
缓存管理主要涉及回收机制与同步机制.
- 回收机制:保证缓存的内存使用会保持在一个稳定的范围.
- 同步机制:保证缓存的数据源负载会保持在一个稳定的范围.
缓存管理自动化能保证对内存的增删改操作会自动更新到数据源.让使用者不必再与各种回收问题与同步问题纠缠.为领域驱动设计与测试驱动开发提供基础保障.
缓存模块基于堆内缓存实现了Cache as Record模式.
通过延时,批量,合并,限流等方式,能够极大降低数据源的负载.
缓存模块实现多种瞬时化策略与持久化策略.
UserDefinedTransienceStrategy
- 基于空间
先进先出(First In First Out)和最近最少使用(Least Recently Used)
LeastRecentlyUsedTransienceStrategy
- 基于时间
存活期(Time To Live)和空闲期(Time To Idle)
DelayedTransienceStrategy
PromptPersistenceStrategy
- 基于队列
QueuePersistenceStrategy
- 基于定时
SchedulePersistenceStrategy