spring boot guava cache 缓存学习
来源:互联网 发布:阿莫源码 编辑:程序博客网 时间:2024/06/10 20:20
spring boot guava cache 缓存学习
- 自定义key
- 自定义全局key过期时间,缓存个数
- 针对单个key自定义过期时间,缓存个数
引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency>
自定义key
@Override @Cacheable(value = "user", key = "'user'.concat(#id.toString())") public User findUserById(Long id) { log.info("findUserById query from db, id: {}", id); return userMap.get(id); } @Override @CachePut(value = "user", key = "'user'.concat(#user.id.toString())") public void update(User user) { log.info("update db, user: {}", user.toString()); userMap.put(user.getId(), user); } @Override @CacheEvict(value = "user", key = "'user'.concat(#id.toString())") public void remove(Long id) { log.info("remove from db, id: {}", id); userMap.remove(id); }
自定义全局key过期时间,缓存个数
package com.km.config;import com.google.common.cache.CacheBuilder;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.EnableCaching;import org.springframework.cache.guava.GuavaCache;import org.springframework.cache.support.SimpleCacheManager;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.util.ArrayList;import java.util.concurrent.TimeUnit;/** * <p>guava缓存配置</p> * Created by zhezhiyong@163.com on 2017/9/22. */@Configuration@EnableCachingpublic class GuavaConfig { /** * 配置全局缓存参数,3600秒过期,最大个数1000 */ @Bean public CacheManager cacheManager() { GuavaCacheManager cacheManager = new GuavaCacheManager(); cacheManager.setCacheBuilder(CacheBuilder.newBuilder().expireAfterWrite(3600, TimeUnit.SECONDS).maximumSize(1000)); return cacheManager; }}
针对单个key自定义过期时间,缓存个数
package com.km.config;import com.google.common.cache.CacheBuilder;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.EnableCaching;import org.springframework.cache.guava.GuavaCache;import org.springframework.cache.support.SimpleCacheManager;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.util.ArrayList;import java.util.concurrent.TimeUnit;/** * <p>guava缓存配置</p> * Created by zhezhiyong@163.com on 2017/9/22. */@Configuration@EnableCachingpublic class GuavaConfig { private static final int DEFAULT_MAXSIZE = 1000; private static final int DEFAULT_TTL = 3600; /** * 定义cache名称、超时时长秒、最大个数 * 每个cache缺省3600秒过期,最大个数1000 */ public enum Caches { user(60, 2), info(5), role; Caches() { } Caches(int ttl) { this.ttl = ttl; } Caches(int ttl, int maxSize) { this.ttl = ttl; this.maxSize = maxSize; } private int maxSize = DEFAULT_MAXSIZE; //最大數量 private int ttl = DEFAULT_TTL; //过期时间(秒) public int getMaxSize() { return maxSize; } public void setMaxSize(int maxSize) { this.maxSize = maxSize; } public int getTtl() { return ttl; } public void setTtl(int ttl) { this.ttl = ttl; } } /** * 个性化配置缓存 */ @Bean public CacheManager cacheManager() { SimpleCacheManager manager = new SimpleCacheManager(); //把各个cache注册到cacheManager中,GuavaCache实现了org.springframework.cache.Cache接口 ArrayList<GuavaCache> caches = new ArrayList<>(); for (Caches c : Caches.values()) { caches.add(new GuavaCache(c.name(), CacheBuilder.newBuilder().recordStats().expireAfterWrite(c.getTtl(), TimeUnit.SECONDS).maximumSize(c.getMaxSize()).build())); } manager.setCaches(caches); return manager; }}
配置yml
server: port: 8080spring: cache: type: guava
配置启动
package com.km;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cache.annotation.EnableCaching;@SpringBootApplication@EnableCachingpublic class SpringBootGuavaCacheApplication { public static void main(String[] args) { SpringApplication.run(SpringBootGuavaCacheApplication.class, args); }}
示例
点击下载源码,如果对你有帮助请赏赐一个star
阅读全文
0 0
- spring boot guava cache 缓存学习
- spring boot guava cache 缓存学习
- spring boot redis cache 缓存学习
- spring boot caffeine cache 缓存学习
- Spring Boot 数据缓存 Cache
- Guava Cache缓存
- Spring Boot 菜鸟教程 17 Cache-缓存
- Spring Boot 轻量级缓存 Ace-Cache
- Spring boot的数据缓存Cache
- Guava学习笔记:Guava cache
- Guava学习笔记:Guava cache
- Guava学习笔记:Guava cache
- Guava学习笔记:Guava cache
- Guava学习笔记:Guava cache
- Guava学习笔记:Guava cache
- Guava学习笔记:Guava cache
- Guava学习笔记:Guava cache
- spring guava cache
- Java集合框架源码分析(四)——LinkedHashMap
- PageHelper3.6.3问题
- 下拉框带搜索
- 字节长度与打印格式
- K-means算法进行简单的图像"语义"分割,java
- spring boot guava cache 缓存学习
- Android Comiple线上依赖库制作
- 初用博客
- java代理模式
- 【技术文档】jeecg3.7-maven搭建环境入门
- PHP实现费波纳奇数列
- Hibernate Hql查询实例
- 孤儿进程与僵尸进程[总结]
- Trinty Tool 编码反思