Skip to content
Birdy edited this page Apr 6, 2019 · 5 revisions

缓存

缓存类型

Java的缓存类型分为堆内缓存堆外缓存两种.

类型 优势 劣势
堆内缓存 读写无需序列化与反序列化,速度快 会受到JVM的限制(GC时间与堆空间)
堆外缓存 不受到JVM的限制,甚至可以通过硬盘与网络达到接近无限的容量 读写都需要序列化与反序列化,甚至是进程交互,速度慢

缓存模式

缓存模式分为Cache AsideCache as Record两种.

Cache Aside顾名思义,即由代码维护缓存;

读/写穿透(Read/Write-Through)

读场景,尝试从缓存读取数据,如果失败,则从记录获取数据并添加到缓存中(自动过期);

写场景,尝试将数据写到记录,如果成功,则将数据从缓存中移除(手动过期);

Cache as Record顾名思义,即将缓存当记录(某种数据源),由框架负责维护缓存与记录之间的一致性;

JStarCraft的缓存模块(cache)

缓存模块基于堆内缓存实现了Cache as Record模式.

通过延时,批量,合并,限流等方式,能够极大降低数据源的负载.

缓存模块实现多种瞬时化策略持久化策略.

瞬时化策略控制缓存中的数据如何回收?

UserDefinedTransienceStrategy

  • 基于空间

先进先出(First In First Out)和最近最少使用(Least Recently Used)

LeastRecentlyUsedTransienceStrategy

  • 基于时间

存活期(Time To Live)和空闲期(Time To Idle)

DelayedTransienceStrategy

持久化策略控制缓存中的数据如何同步?

PromptPersistenceStrategy

  • 基于队列

QueuePersistenceStrategy

  • 基于定时

SchedulePersistenceStrategy

Clone this wiki locally