Redis和Caffeine的区别
相同点
- 两个都是缓存的方式
不同点
- redis是分布式缓存,通过网络将数据存储到redis服务器内存里
- caffeine是将数据存储在本地应用里
- caffeine和redis相比,没有了网络IO上的消耗
联系
- 一般将两者结合起来,形成一二级缓存。
- 使用流程大致如下:
- 先去一级缓存中查找数据(caffeine-本地应用内),
- 如果没有的话,去二级缓存中查找数据(redis-内存),
- 再没有,再去数据库中查找数据(数据库-磁盘)
Spring Boot 缓存 Caffeine使用
1.需要添加的依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caff<em style="color:transparent">本文来源[email protected]搞@^&代*@码)网9</em>eine</artifactId> <version>2.8.6</version> </dependency>
2.配置
在SpringBoot中配置Caffeine,控制缓存行为(例如过期时间,缓存大小限制等)
import com.github.benmanes.caffeine.cache.Caffeine; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.concurrent.TimeUnit; @Configuration @EnableCaching //开启缓存 public class CaffeinConfig { @Bean //配置Caffeine缓存行为(例如到期,缓存大小限制等) public Caffeine caffeineConfig() { Caffeine caffeine = Caffeine.newBuilder() .expireAfterWrite(60, TimeUnit.MINUTES) .maximumSize(1000); return caffeine; } @Bean public CacheManager cacheManager(Caffeine caffeine) { CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager(); caffeineCacheManager.setCaffeine(caffeine); return caffeineCacheManager; } }
Caffeine配置说明:
initialCapacity=[integer]
:初始的缓存空间大小
maximumSize=[long]
:缓存的最大条数