spring boot guava cache 缓存学习
2017-09-22 17:59
916 查看
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 @EnableCaching public 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 @EnableCaching public 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: 8080 spring: cache: type: guava
配置启动
package com.km; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; @SpringBootApplication @EnableCaching public class SpringBootGuavaCacheApplication { public static void main(String[] args) { SpringApplication.run(SpringBootGuavaCacheApplication.class, args); } }
示例
点击下载源码,如果对你有帮助请赏赐一个star相关文章推荐
- spring boot guava cache 缓存学习
- spring boot guava cache 缓存学习
- spring boot caffeine cache 缓存学习
- spring boot redis cache 缓存学习
- [Google Guava]学习--缓存cache
- Spring Boot学习之整合Redis实现缓存
- Spring Boot cache backed guava/caffeine
- springboot缓存 之 从Cache中取出所有条目
- springBoot学习(四): springBoot + Cache 缓存
- Spring Boot学习(缓存-Redis)
- Spring Boot缓存实战 默认Cache(ConcurrentMapCacheManager)
- SpringBoot使用Redis做缓存,@Cacheable、@CachePut、@CacheEvict等注解的使用
- spring-boot-mybatis-cache-thymeleaf学习
- Spring Boot 菜鸟教程 17 Cache-缓存
- Spring Boot 数据缓存 Cache
- 学习SpringBoot+Redis 实现页面缓存
- REDIS学习(3.2)spring boot 使用redis作为缓存
- spring boot 学习(十四)SpringBoot+Redis+SpringSession缓存之实战
- spring boot整合shiro后,部分注解(Cache缓存、Transaction事务等)失效的问题
- SpringBoot缓存注解学习笔记之Redis