guava是谷歌提供的工具类,功能强大,举个例子,我我想把数据存到本地,该咋办?我们想到的只有是全局的Map和session中。如果我们想实现这个容器的大小呢?时间呢?不好搞吧。
guava就有这样的功能。话不多说 上code
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
TokenCache.java
package com.mmall.common;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import lombok.extern.slf4j.Slf4j; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit; /**
* Created by 敲代码的卡卡罗特
* on 2018/3/11 16:52.
*/
@Slf4j
public class TokenCache {
public static final String TOKEN_PREFIX="token_";
private static LoadingCache<String,String> loadingCache = CacheBuilder.newBuilder().initialCapacity(1000)//初始容量
        .maximumSize(10000) //最大缓存数据量
.expireAfterAccess(12, TimeUnit.HOURS) //过期清除
        .removalListener(new RemovalListener<String, String>() { //设置监听事件,就是在 删除key的时候触发这个事件
@Override
public void onRemoval(RemovalNotification<String, String> notification) {
System.out.println(registerCache.size()+"---------------");
String email = notification.getValue();
String key = notification.getKey();
RemovalCause cause = notification.getCause();
System.out.println("email===="+email);
System.out.println("key===="+key);
System.out.println("cause===="+cause);
}
})
.build(new CacheLoader<String, String>() { //缓存规则,功能很鸡肋 不知道干嘛的 没用到过。
@Override
public String load(String s) throws Exception {
return "null";
}
}); public static void setKey(String key,String val){
loadingCache.put(key,val);
} public static String getKey(String key){
String val=null;
try {
val = loadingCache.get(key);
} catch (ExecutionException e) {
e.printStackTrace();
log.error("缓存中没有该key");
}
return val;
} //删除key的几个方法
//任何时候,你都可以显式地清除缓存项,而不是等到它被回收: //个别清除:Cache.invalidate(key)
//批量清除:Cache.invalidateAll(keys)
//清除所有缓存项:Cache.invalidateAll() }

 

 

 

利用guava来实现本地的cache缓存的更多相关文章

  1. google guava cache缓存基本使用讲解

    代码地址:https://github.com/vikde/demo-guava-cache 一.简介 guava cache是google guava中的一个内存缓存模块,用于将数据缓存到JVM内存 ...

  2. spring boot guava cache 缓存学习

    http://blog.csdn.net/hy245120020/article/details/78065676 ****************************************** ...

  3. Guava 源码分析(Cache 原理 对象引用、事件回调)

    前言 在上文「Guava 源码分析(Cache 原理)」中分析了 Guava Cache 的相关原理. 文末提到了回收机制.移除时间通知等内容,许多朋友也挺感兴趣,这次就这两个内容再来分析分析. 在开 ...

  4. [js开源组件开发]localStorage-cache本地存储的缓存管理

    localStorage-cache本地存储的缓存管理 距离上次的组件开发有近三个月的时间了,最近一直在做一些杂事,无法静下心来写写代码,也是在学习emberjs,在emberjs中有一个很重要的东西 ...

  5. Guava 源码分析之Cache的实现原理

    Guava 源码分析之Cache的实现原理 前言 Google 出的 Guava 是 Java 核心增强的库,应用非常广泛. 我平时用的也挺频繁,这次就借助日常使用的 Cache 组件来看看 Goog ...

  6. 注释驱动的 Spring cache 缓存介绍

    概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使 ...

  7. [转]注释驱动的 Spring cache 缓存介绍

    原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/ 概述 Spring 3.1 引入了激动人心的基于注释(an ...

  8. paip.cache 缓存架构以及性能提升总结

    paip.cache 缓存架构以及性能提升总结 1         缓存架构以及性能(贯穿读出式(LookThrough) 旁路读出式(LookAside) 写穿式(WriteThrough) 回写式 ...

  9. 注释驱动的 Spring cache 缓存介绍--转载

    概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使 ...

随机推荐

  1. shell脚本--文件查找之find命令

    首先是通过文件名称来查找,需要使用一个-name参数. 查询以  .txt结尾的文件,和以 t 开头的文件: ubuntu@ubuntu:~/test$ ls one.txt three.txt tw ...

  2. Java7和8在虚拟机上的差异:Perm Generation vs. Metaspace

  3. Spring源码阅读学习一

    昨天抽时间阅读Spring源码,先从spring 4.x的core包开始吧,除了core和util里,首当其冲的就是asm和cglib. 要实现两个类实例之间的字段的复制功能: 多年之前用C#,因为阅 ...

  4. Ubuntu设置静态IP的方法

    通过修改配置文件/etc/network/interfaces,如果/etc/resolv.conf中提示nameserver会被resolvconf修改,是临时文件,那么dns server也可以在 ...

  5. js面向对象高级编程

    面向对象的组成 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  6. Oracle 控制文件管理

    控制文件是一个很小的二进制文件(10MB左右),含有数据库结构信息,包括数据文件和日志文件信息.控制文件在数据库创建时被自动创建,并在数据库发生物理变数时更新.控制文件被不断更新,在任何时候都要保证控 ...

  7. Excel 使用AutoFill提示“类Range的AutoFill方法无效”

    今天遇到一个神奇的问题,之前一直使用很好的代码突然报错:“类Range的AutoFill方法无效”,在网上搜索了一番,感觉没有一个与我遇到的情况相同的.debug,查看一下代码,发现程序里,AutoF ...

  8. number (1)eclipse 连接数据库报错 数据库信息不对导致的出错

  9. HTML-XML数据解析

    HTML代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...

  10. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)A,B,C

    A:链接:http://codeforces.com/contest/831/problem/A 解题思路: 从前往后分别统计递增,相等,递减序列的长度,如果最后长度和原序列长度相等那么就输出yes: ...