Skip to content

Beangle Cache API 调用说明 ​

模块总览 ​

模块包名功能说明
Coreorg.beangle.cache核心缓存接口和抽象类
Caffeineorg.beangle.cache.caffeineCaffeine 缓存实现
Ehcacheorg.beangle.cache.ehcacheEhcache 缓存实现
Redisorg.beangle.cache.redisRedis 缓存实现
Concurrentorg.beangle.cache.concurrentConcurrentMap 缓存实现
Chainorg.beangle.cache.chain缓存链实现
Broadcasterorg.beangle.cache缓存广播接口
JGroupsorg.beangle.cache.jgroupsJGroups 集群广播实现

Core 模块 ​

org.beangle.cache - 提供核心缓存接口和抽象类。

功能说明 提供核心缓存接口和抽象类,包括 CacheManager、Cache、Broadcaster 等核心组件。

主要 API

API功能描述使用示例
CacheManager缓存管理器接口val manager = new CaffeineCacheManager(true)
Cache缓存接口cache.get(key)
Broadcaster缓存广播接口broadcaster.broadcast(eviction)
AbstractCacheManager抽象缓存管理器class MyCacheManager extends AbstractCacheManager

常用场景示例

scala
import org.beangle.cache.AbstractCacheManager

class MyCacheManager(autoCreate: Boolean) extends AbstractCacheManager(autoCreate) {
  protected def newCache[K, V](name: String, keyType: Class[K], valueType: Class[V]): Cache[K, V] = {
    new CaffeineCache(name)
  }
  
  protected def findCache[K, V](name: String, keyType: Class[K], valueType: Class[V]): Cache[K, V] = {
    null
  }
}

val manager = new MyCacheManager(true)
val cache = manager.getCache[String, String]("myCache", classOf[String], classOf[String])

Caffeine 模块 ​

org.beangle.cache.caffeine - 提供 Caffeine 缓存实现。

功能说明 基于 Caffeine 的高性能本地缓存实现,支持自动过期、自动加载、大小限制等功能。

主要 API

API功能描述使用示例
CaffeineCacheManagerCaffeine 缓存管理器new CaffeineCacheManager(true)
CaffeineCacheCaffeine 缓存实现new CaffeineCache(name)

常用场景示例

scala
import org.beangle.cache.caffeine.CaffeineCacheManager

val manager = new CaffeineCacheManager(autoCreate = true)
val cache = manager.getCache[String, User]("users", classOf[String], classOf[User])

cache.put("user1", User("John", 30))
val user = cache.get("user1")

cache.evict("user1")
cache.clear()

Ehcache 模块 ​

org.beangle.cache.ehcache - 提供 Ehcache 缓存实现。

功能说明 基于 Ehcache 的缓存实现,支持磁盘持久化、集群缓存等功能。

主要 API

API功能描述使用示例
EhCacheManagerEhcache 缓存管理器new EhCacheManager(configPath)
EhCacheEhcache 缓存实现new EhCache(ehcache)
EhCacheClusterManagerEhcache 集群管理器new EhCacheClusterManager()
Listener缓存监听器new MyListener()

常用场景示例

scala
import org.beangle.cache.ehcache.EhCacheManager

val manager = new EhCacheManager("ehcache.xml")
val cache = manager.getCache[String, String]("data", classOf[String], classOf[String])

cache.put("key1", "value1")
val value = cache.get("key1")

cache.remove("key1")
cache.removeAll()

Redis 模块 ​

org.beangle.cache.redis - 提供 Redis 缓存实现。

功能说明 基于 Redis 的分布式缓存实现,支持缓存持久化、集群模式等功能。

主要 API

API功能描述使用示例
RedisCacheManagerRedis 缓存管理器new RedisCacheManager(host, port)
RedisCacheRedis 缓存实现new RedisCache(name, client)
RedisClientFactoryRedis 客户端工厂RedisClientFactory.create(host, port)
RedisBroadcasterRedis 广播器new RedisBroadcaster(channel)

常用场景示例

scala
import org.beangle.cache.redis.RedisCacheManager

val manager = new RedisCacheManager("localhost", 6379)
val cache = manager.getCache[String, String]("session", classOf[String], classOf[String])

cache.put("session123", "user_data")
val sessionData = cache.get("session123")

cache.delete("session123")
cache.clear()

Concurrent 模块 ​

org.beangle.cache.concurrent - 提供 ConcurrentMap 缓存实现。

功能说明 基于 Java ConcurrentMap 的简单缓存实现,适合轻量级缓存需求。

主要 API

API功能描述使用示例
ConcurrentMapCacheManagerConcurrentMap 缓存管理器new ConcurrentMapCacheManager(true)
ConcurrentMapCacheConcurrentMap 缓存实现new ConcurrentMapCache(name)

常用场景示例

scala
import org.beangle.cache.concurrent.ConcurrentMapCacheManager

val manager = new ConcurrentMapCacheManager(autoCreate = true)
val cache = manager.getCache[String, String]("simple", classOf[String], classOf[String])

cache.put("key", "value")
val value = cache.get("key")

Chain 模块 ​

org.beangle.cache.chain - 提供缓存链实现。

功能说明 支持多级缓存链,实现缓存分层和缓存穿透保护。

主要 API

API功能描述使用示例
ChainedManager缓存链管理器new ChainedManager(managers)
ChainedCache缓存链实现new ChainedCache(caches)

常用场景示例

scala
import org.beangle.cache.chain.ChainedManager

val l1Cache = new CaffeineCacheManager(autoCreate = true)
val l2Cache = new RedisCacheManager("localhost", 6379)

val chainedManager = new ChainedManager(Seq(l1Cache, l2Cache))
val cache = chainedManager.getCache[String, String]("data", classOf[String], classOf[String])

cache.put("key", "value")
val value = cache.get("key")

Broadcaster 模块 ​

org.beangle.cache - 提供缓存广播接口。

功能说明 提供缓存变更的广播通知接口,支持分布式缓存同步。

主要 API

API功能描述使用示例
Broadcaster缓存广播接口broadcaster.broadcast(eviction)
JGroupsBroadcasterJGroups 广播器new JGroupsBroadcaster(config)

常用场景示例

scala
import org.beangle.cache.jgroups.JGroupsBroadcaster

val broadcaster = new JGroupsBroadcaster("jgroups.xml")
broadcaster.start()

val eviction = Eviction("myCache", "key1")
broadcaster.broadcast(eviction)

最佳实践 ​

缓存选择 ​

  • Caffeine:适合高性能本地缓存,支持自动过期和自动加载
  • Redis:适合分布式缓存,支持持久化和集群
  • Ehcache:适合需要磁盘持久化的场景,支持集群
  • ConcurrentMap:适合简单的内存缓存,轻量级

缓存链使用 ​

  • 使用 L1 缓存(Caffeine)提供快速访问
  • 使用 L2 缓存(Redis)提供分布式共享
  • 合理设置各级缓存的过期时间

缓存同步 ​

  • 在分布式环境中使用广播器同步缓存
  • 使用 JGroups 实现集群缓存同步
  • 监听缓存变更事件,及时更新

性能优化 ​

  • 合理设置缓存大小限制
  • 使用异步加载避免缓存雪崩
  • 监控缓存命中率,优化缓存策略
  • 定期清理过期缓存,避免内存泄漏