-
Notifications
You must be signed in to change notification settings - Fork 47
Birdy edited this page Apr 6, 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