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相关推荐

  1. Spring Caching抽象和Google Guava Cache

    Spring为缓存昂贵的方法调用提供了强大的开箱即用支持. 这里详细介绍了缓存抽象. 我的目的是要介绍Spring现在为框架的4.0+版本提供的较新的缓存实现之一-使用Google Guava Cac ...

  2. 正则表达式 guava_带有正则表达式模式的Google Guava Cache

    正则表达式 guava 最近我看到了一个关于Google Guava的不错的介绍 ,我们在我们的项目中得出结论,使用它的缓存功能真的很有趣. 让我们看一下regexp Pattern类及其编译功能 . ...

  3. 带有正则表达式模式的Google Guava Cache

    最近我看到了一个关于Google Guava的精彩演讲 ,我们在我们的项目中得出结论,使用它的缓存功能真的很有趣. 让我们看一下regexp Pattern类及其编译功能 . 在代码中经常可以看到,每 ...

  4. (翻译)Google Guava Cache

    翻译自Google Guava Cache This Post is a continuation of my series on Google Guava, this time covering G ...

  5. guava_使用Google Guava Cache进行本地缓存

    guava 很多时候,我们将不得不从数据库或另一个Web服务获取数据或从文件系统加载数据. 在涉及网络呼叫的情况下,将存在固有的网络延迟,网络带宽限制. 解决此问题的方法之一是在应用程序本地拥有一个缓 ...

  6. 使用Google Guava Cache进行本地缓存

    很多时候,我们将不得不从数据库或另一个Web服务获取数据或从文件系统加载数据. 在涉及网络呼叫的情况下,将存在固有的网络等待时间,网络带宽限制. 解决此问题的方法之一是在应用程序本地拥有一个缓存. 如 ...

  7. Google Guava Cache高效本地缓存

    目录 Guava Cache使用需求和场景 需求 场景 缓存设置 缓存的并发级别 缓存的初始容量设置 设置最大存储 缓存清除策略 基于存活时间的清除策略 基于容量的清除策略 基于权重的清除 策略 显式 ...

  8. Google guava cache源码解析1--构建缓存器(3)

    此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 下面介绍在LocalCache(CacheBuilder, CacheLoader)中调用的一些方法: Ca ...

  9. Google guava cache源码解析1--构建缓存器(2)

    此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. CacheBuilder-->maximumSize(long size) /*** 指定cache中 ...

最新文章

  1. sqlserver在linux数据备份,SQLServer数据库之sqlserver for linux自动备份数据库脚本
  2. java cutdown_Java并发程序入门介绍
  3. Atitit.播放系统的选片服务器,包厢记时系统 的说明,教程,维护,故障排查手册p825...
  4. MapReduce源码分析总结
  5. 数据库元数据数据字典查询_6_列出给定表的外键引用
  6. 一个nuxt(vue)+mongoose全栈项目聊聊我粗浅的项目架构
  7. 短信宝 php使用,[php] 使用 短信宝 发送短信(thinkphp)
  8. C ++ 指针 | 指针与函数、数组_3
  9. iphone降级 无需电脑_App 降级无需电脑,手机直接搞
  10. 43.访问控制过滤器(Access Control Filter)
  11. 自制Beamer主题
  12. 交友网站界面设计+数据库设计
  13. python回复qq_「转」使用python发送qq消息
  14. Apple和元宇宙,迄今为止我们所知道的一切
  15. Unity中模型的面数问题
  16. linux查找目录中指定文件或遍历指定文件夹
  17. ES启动报错error downloading geoip database [GeoLite2-ASN.mmdb]
  18. JavaScript百炼成仙 1.20 函数七重关之二 (作用域)
  19. 腾讯云轻量服务器在线安装MySQL
  20. 《周志明的软件架构课》学习笔记 Day11

热门文章

  1. POJ3208-Apocalypse Someday【数位dp】
  2. Codeforces Global Round 11——E随机+线性基待补
  3. 【二分】Distinct
  4. codeforces F.Fibonacci String Subsequences
  5. Detection of Extraterrestrial KMP匹配 重复k次子串 好题
  6. Sentinel(十六)之AHAS Sentinel 控制台
  7. Oracle入门(十四.2)之PL / SQL的好处
  8. Oracle入门(七B)之表空间删除数据文件未删除
  9. 1分钟了解“区块链分叉”的本质
  10. 将编号为0和1的两个栈存放于一个数组空间V[m]中。