前不久,业务实现上需要用到本地缓存来解决一些数据量相对较小但是频繁访问的数据,通过查找各种资料,找到了一种可以实现的方案——采用的是Google的CacheBuilder。下面是代码实现过程:
1.首先在maven中引入下面的包;
  1. <dependency>
  2. <groupId>com.google.guava</groupId>
  3. <artifactId>guava</artifactId>
  4. <version>19.0</version>
  5. </dependency>
2.下面这段是缓存代码,用到了匿名内部类的方式;
package com.jd.common.util;
import java.util.concurrent.TimeUnit;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache; public class AndyService
{
private final LoadingCache<String, String> cache; public AndyService()
{
/**
* 5秒自动过期
*/
cache = CacheBuilder.newBuilder().expireAfterWrite(5, TimeUnit.SECONDS).build(new CacheLoader<String, String>() {
public String load(String id) throws Exception
{
System.out.println("method inovke");
//这里执行查询数据库,等其他复杂的逻辑
return "User:" + id;
}
});
} public String getAndyName(String id) throws Exception
{
return cache.get(id);
}
}
3.下面是测试用例
class GuavaCacheTest
{
public static void main(String[] args)throws Exception
{
AndyService us = new AndyService();
for(int i=0;i<20;i++)
{
System.out.println(us.getAndyName("1001"));
TimeUnit.SECONDS.sleep(1);
}
}
}
4.下面的是控制台中代码输入内容:

method inovke
User:1001
User:1001
User:1001

method inovke
User:1001
User:1001
User:1001

method inovke
User:1001
User:1001
User:1001

method inovke
User:1001
User:1001
User:1001

关于为什么使用本地缓存而不使用别的方式的原因,详见前辈的总结:
http://www.cnblogs.com/fengli9998/p/7875027.html

最新文章

  1. APUE学习之出错处理
  2. SharePoint 2010: Export User Profile Properties to a Text File or Excel using PowerShell
  3. iOS之 PJSIP蓝牙外设音频支持
  4. QQ登录类
  5. Mac 下查看 Android Studio 的 SHA1的方法
  6. javascript对象(1)
  7. 深入浅出ES6(二):迭代器和for-of循环
  8. 优化SQL Server数据库查询方法
  9. 关于C++构造函数的FAQ
  10. tomcat结合nginx使用 基础教程
  11. VHDL学习之TEXTIO在仿真中的应用
  12. 学习phpcms模板方法:
  13. Rational Rose正逆向工程(类图转Java代码,Java代码转类图)
  14. 虚拟机 与 host主机,无法ping通的问题
  15. java线程之二(synchronize和volatile方法)
  16. IntelliJ Idea 授权服务器使用
  17. (Review cs231n) Backpropagation and Neural Network
  18. .net webapi 收不到json 实体类参数,返回的json中带有k__BackingField
  19. linux读书笔记(5章)
  20. SRcnn:神经网络重建图片的开山之作

热门文章

  1. Nginx完整配置配置样例【官方版】
  2. inux_异常_07_ftp查看不到文件列表
  3. 阿里云的oss使用技巧
  4. Bash shell编程的语法知识点(1)
  5. [js高手之路] vue系列教程 - vue的基本用法与常见指令(1)
  6. Java实现贪吃蛇游戏【代码】
  7. Java的成员变量初始化
  8. 【Bootstrap简单用法】
  9. 2018年1月 mybatis+ 动态sql连续日期
  10. 【网络流】POJ1273 Drainage Ditches