1、简介
对于存储在缓存中的任何数据,都需要放置一个再生策略,以防数据丢失。这一理念是play基本原则之一。对于进程内缓存,Caffeine 通常是最佳选择。如果需要分布式缓存,play提供了Memcached和Redis的第三方插件。
2、添加缓存插件
添加Caffeine缓存的依赖项:
libraryDependencies ++= Seq(
caffeine
)
添加ehcache的依赖项:
libraryDependencies ++= Seq(
ehcache
)
仅添加cache api的依赖项:
libraryDependencies ++= Seq(
cacheApi
)
3、访问缓存层
缓存API由AsyncCacheAPI和SyncCacheAPI接口定义,具体取决于是希望异步实现还是同步实现
4、访问不同的缓存
要访问不同的缓存,在注入它们时,请根据依赖项使用@NamedCahce进行限定,例如:
如果想访问多个不同的缓存,那么需要在application.conf中绑定:play.cache.bindCaches = ["db-cache", "user-cache", "session-cache"]
5、设置缓存的执行方式
默认情况下,所有Caffeine 和ehcache操作都是阻塞的,异步实现将阻塞当前线程。通常情况下,如果您使用的是play的默认配置,它只将元素存储在内存中,因为读取速度相对较快。但是,根据缓存的配置方式,这种阻塞I/O可能代价太高。对于这种情况,可以配置不同的AKKA Dispatcher,并通过play.cache.Dispatcher设置它,以便缓存插件使用它,配置方式如下:
6、自定义实现缓存
思路就是先将默认依赖的缓存进行注销,然后注入自定义的缓存
在application.conf文件中配置:
play.modules.enabled += "czp.api.SelfCacheModule"