caffeine本地缓存使用
1.pom引入
参考:https://blog.csdn.net/f641385712/article/details/94982916
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
2 准备cache config配置文件:CacheConfig.java
参考:https://blog.51cto.com/u_14987832/4540318?b=totalstatistic
@EnableCaching
@Configuration
public class CacheConfig {
@Bean
public Cache<String, Object> caffeineCache() {
return Caffeine.newBuilder()
//多久过期
//.expireAfterWrite(10, TimeUnit.SECONDS) // 设置最后一次写入后经过固定时间过期
.expireAfterAccess(5, TimeUnit.SECONDS) // 设置最后一次访问后经过固定时间过期
// 初始的缓存空间大小
.initialCapacity(100)
// 缓存的最大条数
.maximumSize(10000)
.build();
}
}
3.RedisUtils.java
@Component
public class RedisUtils{
private static final Logger log = LoggerFactory.getLogger(RedisUtils.class);
private RedisTemplate<Object, Object> redisTemplate;
@value("${jwt.online-key}")
private String onlinekey;
public RedisUtils(RedisTemplate<Object, Object> redisTemplate){this.redisTemplate = redisTemplate;};
@Autowired
private Cache<String,Object> caffeineCache;
//指定缓存过期时间(重载方法)、获取过期时间
public Object get(String key){
Object value = null ;
try{
value = caffeineCache.getIfPresent(key);
if(value == null){
value = key = null ? null : redisTemplate.opsForValue().get(key);
} catch (Exception e) {
value = caffeineCache.getIfPresent(key);
}
return value;
}
……
}
参考:https://blog.csdn.net/u013078871/article/details/116211576