spring boot caffeine cache 缓存学习
来源:互联网 发布:java 开发棋牌类游戏 编辑:程序博客网 时间:2024/05/29 14:12
spring boot caffeine cache 缓存学习
- 自定义key
- 自定义全局key过期时间,缓存个数
- 针对单个key自定义过期时间,缓存个数
配置
- yml配置:
- 优点:简单
- 缺点:无法针对每个cache配置不同的参数,比如过期时间、最大个数
- java配置
- 优点:可以针对每个cache配置不同的参数,比如过期时间、最大个数
- 缺点:java代码
引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> </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); }
java配置
package com.km.config;import com.github.benmanes.caffeine.cache.Caffeine;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.EnableCaching;import org.springframework.cache.caffeine.CaffeineCache;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>java方式:caffeine缓存配置</p> * Created by zhezhiyong@163.com on 2017/9/22. */@Configuration@EnableCachingpublic class CacheConfig { 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中,CaffeineCache实现了org.springframework.cache.Cache接口 ArrayList<CaffeineCache> caches = new ArrayList<>(); for (Caches c : Caches.values()) { caches.add(new CaffeineCache(c.name(), Caffeine.newBuilder().recordStats() .expireAfterWrite(c.getTtl(), TimeUnit.SECONDS) .maximumSize(c.getMaxSize()) .build()) ); } manager.setCaches(caches); return manager; }}
yml配置
server: port: 8080spring: cache: caffeine: spec: maximumSize=500,expireAfterWrite=5s type: caffeine cache-names: - user - info
配置启动
package com.km;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cache.annotation.EnableCaching;@SpringBootApplication@EnableCachingpublic class SpringBootCaffeineCacheApplication { public static void main(String[] args) { SpringApplication.run(SpringBootCaffeineCacheApplication.class, args); }}
示例
点击下载源码,如果对你有帮助请赏赐一个star
阅读全文
0 0
- spring boot caffeine cache 缓存学习
- Spring Boot缓存实战 Caffeine
- spring-boot中配置和使用Caffeine Cache
- spring-boot中配置和使用Caffeine Cache
- Spring Boot缓存实战 Redis + Caffeine 实现多级缓存
- spring boot redis cache 缓存学习
- spring boot guava cache 缓存学习
- spring boot guava cache 缓存学习
- Spring Boot 数据缓存 Cache
- Spring Boot 菜鸟教程 17 Cache-缓存
- Spring Boot 轻量级缓存 Ace-Cache
- Spring boot的数据缓存Cache
- Caffeine 缓存
- spring-boot-mybatis-cache-thymeleaf学习
- Spring Boot缓存实战 默认Cache(ConcurrentMapCacheManager)
- Spring文档学习--缓存(Cache Abstraction)
- Spring boot配置cache
- Spring Boot集成cache
- Trinty Tool 编码反思
- c语言扫雷游戏
- kotlin学习笔记——集合及集合操作符
- pThread ,NSThread的深入理解
- GPU 版 TensorFlow failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED
- spring boot caffeine cache 缓存学习
- 使用javascript获取父级元素
- 第五章 标准I/O库 课后练习题
- [数位DP + AC自动机] Codeforces #434C. Tachibana Kanade's Tofu
- javascript断点调试
- 复用类
- POJ2369
- Android高级的总结
- 【常识】户型图要怎么看?买房时销售员不会说的注意事项