在文章一种完成了缓存项目的初始化、以及默认缓存SimpleCacheConfiguration。本文继续研究使用redis实现缓存。
新增application.properties,内容如下
# redis 相关配置
spring.redis.host=localhost
spring.redis.port=16379
spring.redis.database=0
# spring.redis.username=
# spring.redis.password=
# cache相关配置
spring.cache.cacheNames = cacheName1,cacheName2
spring.cache.redis.timeToLive = 1m
spring.cache.redis.keyPrefix = keyPrefix
spring.cache.redis.cacheNullValues = true
# 默认值就是 true
spring.cache.redis.useKeyPrefix = true
写一个 demo
@GetMapping("cacheable")
@Cacheable(cacheNames = "cache1", key = "'key'")
public String cache() {
System.out.println(new Date());
return "hello cache";
}
看一下结果
- 访问 http://localhost:8080/cache/cacheable
- 通过redis客户端查看,发现cache方法的返回值被存到了redis中,有效时间TTL为54秒(我们再配置中设置了timeToLive = 1m 1分钟)
- 再次访问 http://localhost:8080/cache/cacheable 发现不执行方法体了,而是从redis进行读取了。
总结
至此已经实现了使用redis来存储spring-cache,代码中不用再判断是否有redis中是否有缓存,没有的话取数据库再存储reids。
图片中圈出的红色,有什么问题呢?我们下文在做解释。