mysql caching_Spring Caching抽象和Google Guava Cache
mysql caching
Spring为缓存昂贵的方法调用提供了强大的现成支持。 这里详细介绍了缓存抽象。
我的目标是使用Spring Guava Cache涵盖Spring现在提供的4.0+版本的较新的缓存实现之一。
简而言之,请考虑一种具有几种慢速方法的服务:
public class DummyBookService implements BookService {@Overridepublic Book loadBook(String isbn) {// Slow method 1.}@Overridepublic List<Book> loadBookByAuthor(String author) {// Slow method 2}}
借助Spring Caching抽象,可以通过沿这些行的方法注释来加快具有相同参数的重复调用–在这里,loadBook的结果被缓存到“ book”缓存中,而缓存的图书清单又被缓存到另一个“ books”中快取:
public class DummyBookService implements BookService {@Override@Cacheable("book")public Book loadBook(String isbn) {// slow response time..}@Override@Cacheable("books")public List<Book> loadBookByAuthor(String author) {// Slow listing}
}
现在,对缓存抽象的支持需要一个CacheManager可用,该CacheManager负责管理底层缓存以存储缓存的结果,而对于新的Guava Cache支持,CacheManager遵循以下原则:
@Bean
public CacheManager cacheManager() {return new GuavaCacheManager("books", "book");
}
Google Guava Cache提供了丰富的API,可以预加载缓存,根据上次访问或创建时间设置驱逐时间,设置缓存的大小等,如果要自定义缓存,则可以传递guava CacheBuilder到CacheManager进行此自定义:
@Bean
public CacheManager cacheManager() {GuavaCacheManager guavaCacheManager = new GuavaCacheManager();guavaCacheManager.setCacheBuilder(CacheBuilder.newBuilder().expireAfterAccess(30, TimeUnit.MINUTES));return guavaCacheManager;
}
如果所有缓存都具有相似的配置,则此方法效果很好,如果需要对缓存进行不同的配置(例如),该怎么办。 在上面的示例中,我可能希望“书”缓存永不过期,但“书”缓存具有30分钟的过期时间,那么GuavaCacheManager抽象不能很好地工作,相反,更好的解决方案实际上是使用SimpleCacheManager提供了一种更直接的方法来获取缓存,并且可以通过以下方式进行配置:
@Bean
public CacheManager cacheManager() {SimpleCacheManager simpleCacheManager = new SimpleCacheManager();GuavaCache cache1 = new GuavaCache("book", CacheBuilder.newBuilder().build());GuavaCache cache2 = new GuavaCache("books", CacheBuilder.newBuilder().expireAfterAccess(30, TimeUnit.MINUTES).build());simpleCacheManager.setCaches(Arrays.asList(cache1, cache2));return simpleCacheManager;
}
如果需要,可以将某些缓存配置为由不同的缓存引擎本身来支持,例如简单的哈希映射,一些由Guava或EhCache进行支持,而某些由分布式缓存(如Gemfire)支持,则此方法非常有效。
翻译自: https://www.javacodegeeks.com/2014/11/spring-caching-abstraction-and-google-guava-cache.html
mysql caching
mysql caching_Spring Caching抽象和Google Guava Cache相关推荐
- Spring Caching抽象和Google Guava Cache
Spring为缓存昂贵的方法调用提供了强大的开箱即用支持. 这里详细介绍了缓存抽象. 我的目的是要介绍Spring现在为框架的4.0+版本提供的较新的缓存实现之一-使用Google Guava Cac ...
- 正则表达式 guava_带有正则表达式模式的Google Guava Cache
正则表达式 guava 最近我看到了一个关于Google Guava的不错的介绍 ,我们在我们的项目中得出结论,使用它的缓存功能真的很有趣. 让我们看一下regexp Pattern类及其编译功能 . ...
- 带有正则表达式模式的Google Guava Cache
最近我看到了一个关于Google Guava的精彩演讲 ,我们在我们的项目中得出结论,使用它的缓存功能真的很有趣. 让我们看一下regexp Pattern类及其编译功能 . 在代码中经常可以看到,每 ...
- (翻译)Google Guava Cache
翻译自Google Guava Cache This Post is a continuation of my series on Google Guava, this time covering G ...
- guava_使用Google Guava Cache进行本地缓存
guava 很多时候,我们将不得不从数据库或另一个Web服务获取数据或从文件系统加载数据. 在涉及网络呼叫的情况下,将存在固有的网络延迟,网络带宽限制. 解决此问题的方法之一是在应用程序本地拥有一个缓 ...
- 使用Google Guava Cache进行本地缓存
很多时候,我们将不得不从数据库或另一个Web服务获取数据或从文件系统加载数据. 在涉及网络呼叫的情况下,将存在固有的网络等待时间,网络带宽限制. 解决此问题的方法之一是在应用程序本地拥有一个缓存. 如 ...
- Google Guava Cache高效本地缓存
目录 Guava Cache使用需求和场景 需求 场景 缓存设置 缓存的并发级别 缓存的初始容量设置 设置最大存储 缓存清除策略 基于存活时间的清除策略 基于容量的清除策略 基于权重的清除 策略 显式 ...
- Google guava cache源码解析1--构建缓存器(3)
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 下面介绍在LocalCache(CacheBuilder, CacheLoader)中调用的一些方法: Ca ...
- Google guava cache源码解析1--构建缓存器(2)
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. CacheBuilder-->maximumSize(long size) /*** 指定cache中 ...
最新文章
- sqlserver在linux数据备份,SQLServer数据库之sqlserver for linux自动备份数据库脚本
- java cutdown_Java并发程序入门介绍
- Atitit.播放系统的选片服务器,包厢记时系统 的说明,教程,维护,故障排查手册p825...
- MapReduce源码分析总结
- 数据库元数据数据字典查询_6_列出给定表的外键引用
- 一个nuxt(vue)+mongoose全栈项目聊聊我粗浅的项目架构
- 短信宝 php使用,[php] 使用 短信宝 发送短信(thinkphp)
- C ++ 指针 | 指针与函数、数组_3
- iphone降级 无需电脑_App 降级无需电脑,手机直接搞
- 43.访问控制过滤器(Access Control Filter)
- 自制Beamer主题
- 交友网站界面设计+数据库设计
- python回复qq_「转」使用python发送qq消息
- Apple和元宇宙,迄今为止我们所知道的一切
- Unity中模型的面数问题
- linux查找目录中指定文件或遍历指定文件夹
- ES启动报错error downloading geoip database [GeoLite2-ASN.mmdb]
- JavaScript百炼成仙 1.20 函数七重关之二 (作用域)
- 腾讯云轻量服务器在线安装MySQL
- 《周志明的软件架构课》学习笔记 Day11
热门文章
- POJ3208-Apocalypse Someday【数位dp】
- Codeforces Global Round 11——E随机+线性基待补
- 【二分】Distinct
- codeforces F.Fibonacci String Subsequences
- Detection of Extraterrestrial KMP匹配 重复k次子串 好题
- Sentinel(十六)之AHAS Sentinel 控制台
- Oracle入门(十四.2)之PL / SQL的好处
- Oracle入门(七B)之表空间删除数据文件未删除
- 1分钟了解“区块链分叉”的本质
- 将编号为0和1的两个栈存放于一个数组空间V[m]中。