依赖
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
配置文件
server:
port: 10000
spring:
application:
name: redis-project
redis:
host: localhost
port: 6379
#密码
password:
database: 0
#超时时间(毫秒)
timeout: 1000
jedis:
pool:
#最大连接数
max-active: 8
#最小空闲连接
min-idle: 0
#最大阻塞等待时间(毫秒)
max-wait: 1000
#最大空闲连接
max-idle: 8
开启缓存
@EnableCaching
@SpringBootApplication
public class RedisProjectApplication {
public static void main(String[] args) {
SpringApplication.run(RedisProjectApplication.class, args);
}
}
缓存注解
为了简化配置,可以使用静态变量来模拟替数据库
public static String db = "模拟数据库数据";
这里介绍最简单的使用注解来控制缓存的方式
@Cacheable
@Cacheable(cacheNames = {"test"}, key = "#id",condition = "(#id) != null",unless = "#result !=null ")
public String getDb(String id) {
log.info("-----测试是否进入该方法:{}----", id);
return db;
}
- 这个注解用于获取数据,如果缓存中有就从缓存中获取,如果没有就执行方法,然后返回值就自动放入缓存中
- value/cacheNames 指定缓存组件名称,数组类型可以指定多个
- key /keyGenerator 两者选一,作为缓存的key
- condition 缓存条件,只有判断条件为 true 才进行缓存
- unless 缓存条件,只有判断条件为true时候进行缓存;可以使用#result获取方法的返回挥之
- sync 是否开启异步
@CachePut
@CachePut(cacheNames = {"test"}, key = "#id")
public String update(String id, String data) {
db = data;
return db;
}
- 该注解与@Cacheable使用方式相似,不过每次访问该方法都会进入方法之中,执行成功之后更新缓存
@CacheEvict
@CacheEvict(cacheNames = {"test"}, key = "#id")
public void remove(String id) {
}
- 用于删除缓存
网友评论