上次我们讲了【simple-cache】的使用: 【simple-cache】我开发了一款只要一个注解就可以轻松实现缓存的框架 这次主要更新的内容为:
- 添加springboot项目
- 框架中去除了redisconfig类,避免了redis的单机和集群问题
- 用户可以自定义使用自己项目中的redisTemplate的bean,只需要配置redisTemplate的名称
- RedisCache注解添加了返回类型和添加了TimeUnit
这次给大家带来了【simple-cache】的springboot版本:
simple-cache-spring-boot-starter
前置条件:
首先你的项目需要有自带的redistemplate类,如果没有则可以参考下面的配置:
@Configuration
public class RedisConfig {
@Bean("myRedisTemplate")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
}
并且在yml文件中配置(simple-cache-spring-boot-starter已经引入了redis的包,如果你的项目是springboot则无需再引入):
单机模式
spring.redis.host=127.0.0.1
spring.redis.database=0
spring.redis.port=6379
如果你的springboot要连接redis集群,就不能像单机那么填了,你需要填哨兵集群的ip和端口,配置如下:
#集群
spring.redis.sentinel.master=mymaster
spring.redis.password=123456.com
spring.redis.sentinel.nodes=192.168.64.128:26379,192.168.64.129:26379,192.168.64.130:26379
使用方法:
🐋第一步,在项目中引入simple-cache-spring-boot-starter
<dependency>
<groupId>io.gitee.antopen</groupId>
<artifactId>simple-cache-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
🐋第二步,在启动类加上@EnableSimpleCache
注解
🐋第三步,在配置文件中填写属于你自己项目的redistemplate的bean的名称
如果你redistemplate没有配置bean的名称,则可以不填写,框架会自动拿名称为redisTemplate
的bean
如果你配置的redistemplate的bean的名称,如上面的前置条件里面一样,则需要配置redisTemplateName
simplecache.redisTemplateName=myRedisTemplate
🐋第四步,在你的业务类方法上添加注解RedisCache
@RedisCache(key = "testParams",expire = 100,resultClass = Result.class)
public Result testParams(String name, String sex) {
JSONObject jsonObject = new JSONObject();
jsonObject.put(name, UUID.randomUUID());
jsonObject.put(sex, new Random().nextInt(2));
return Result.buildSuccess(jsonObject);
}
说明:
@RedisCache可选值
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
key | string | 是 | 无 | 缓存的key,可以自定义 |
expire | long | 否 | 1(一天) | 缓存的时间,可以修改 |
unit | TimeUnit | 否 | TimeUnit.DAYS(一天) | 缓存的单位,可以修改 |
resultClass | Class<?> | 否 | JSONObject.class | 返回类的class,方便序列化,可以修改 |
Get方法,例如第四步在redis中存储的key为:
testParams_张三_男
Post方法,例如:
/**
* Post缓存带参数方法
* @return string
*/
@PostMapping("/testParamsPost")
public Object testParamsPost(@RequestBody RequestParamDto requestParamDto) {
return testService.testParamsPost(requestParamDto);
}
@RedisCache(key = "testParamsPost",resultClass = Result.class)
public Result testParamsPost(RequestParamDto requestParamDto) {
return Result.buildSuccess(requestParamDto);
}
在redis中存储的key为
testParamsPost_RequestParam{name='张三', age=1}
如果传入的实体类,则会默认调用传入类的tostring方法:
完整代码:
Simple Cache Spring Boot Starter
Simple Cache Spring Boot 快速启动代码
后续版本考虑:
- 添加el表达式,可以自定义key的名称
如果有建议欢迎提出
如果你也想参加开源项目欢迎加入蚂蚁开源
本次更新主要是给大家带来了simple-cache的springboot版本,相较于之前的版本,这个版本添加了一些新特性和改进,如:
- 添加了springboot项目支持;
- 去除了redisconfig类,避免了redis的单机和集群问题;
- 用户可以自定义使用自己项目中的redisTemplate的bean,只需要配置redisTemplate的名称;
- RedisCache注解添加了返回类型和添加了TimeUnit。
使用simple-cache的springboot版本也十分简单,只需要:
- 引入simple-cache-spring-boot-starter依赖;
- 在启动类加上@EnableSimpleCache注解;
- 在配置文件中填写属于你自己项目的redistemplate的bean的名称;
- 在你的业务类方法上添加注解RedisCache。
此外,在RedisCache注解中还有一些可选属性,比如缓存的key、缓存的时间、缓存的单位、返回类型等,使用起来也十分灵活方便。
总之,使用simple-cache可以轻松实现缓存,提高系统的访问速度和性能,非常适合于中小型项目的缓存需求。