# simple-cache-spring-boot-starter **Repository Path**: antopen/simple-cache-spring-boot-starter ## Basic Information - **Project Name**: simple-cache-spring-boot-starter - **Description**: simple-cache的spring-boot-starter - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: 1.3.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-03-28 - **Last Updated**: 2024-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: Redis, 缓存, 分布式锁 ## README > 上次我们讲了【simple-cache】的使用: [【simple-cache】我开发了一款只要一个注解就可以轻松实现缓存的框架 > ](https://blog.csdn.net/csdnerM/article/details/128581185) > 这次主要更新的内容为: > - 添加springboot项目 > - 框架中去除了redisconfig类,避免了redis的单机和集群问题 > - 用户可以自定义使用自己项目中的redisTemplate的bean,只需要配置redisTemplate的名称 > - RedisCache注解添加了返回类型和添加了TimeUnit **这次给大家带来了【simple-cache】的springboot版本:** [simple-cache-spring-boot-starter ](https://mvnrepository.com/artifact/io.gitee.antopen/simple-cache-spring-boot-starter) ![在这里插入图片描述](READMEimg/e2e78eaaea9d4155a008fe13d44ada26.png) @[toc](使用方法) **前置条件:** 首先你的项目需要有自带的redistemplate类,如果没有则可以参考下面的配置: ```java @Configuration public class RedisConfig { @Bean("myRedisTemplate") public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate 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则无需再引入): **单机模式** ```java spring.redis.host=127.0.0.1 spring.redis.database=0 spring.redis.port=6379 ``` 如果你的springboot要连接redis集群,就不能像单机那么填了,你需要填哨兵集群的ip和端口,配置如下: ```java #集群 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` ```xml io.gitee.antopen simple-cache-spring-boot-starter 1.2.0 ``` # 🐋第二步,在启动类加上`@EnableSimpleCache`注解 ![在这里插入图片描述](READMEimg/b5ead7cfe04649a8b2d6190f22087d40.png) # 🐋第三步,在配置文件中填写属于你自己项目的redistemplate的bean的名称 如果你redistemplate没有配置bean的名称,则可以不填写,框架会自动拿名称为`redisTemplate`的bean 如果你配置的redistemplate的bean的名称,如上面的前置条件里面一样,则需要配置`redisTemplateName ` ![在这里插入图片描述](READMEimg/aa67f29e96ee4c65b06992d1233e8f79.png) ``` simplecache.redisTemplateName=myRedisTemplate ``` # 🐋第四步,在你的业务类方法上添加注解RedisCache ```java @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为: ```java testParams_张三_男 ``` ![在这里插入图片描述](READMEimg/ef3f0a6593f2484083d4f6fa9be1e2fb.png) ![在这里插入图片描述](READMEimg/78b2974439b14652975f1f220c5e8227.png) Post方法,例如: ```java /** * Post缓存带参数方法 * @return string */ @PostMapping("/testParamsPost") public Object testParamsPost(@RequestBody RequestParamDto requestParamDto) { return testService.testParamsPost(requestParamDto); } ``` ```java @RedisCache(key = "testParamsPost",resultClass = Result.class) public Result testParamsPost(RequestParamDto requestParamDto) { return Result.buildSuccess(requestParamDto); } ``` ![在这里插入图片描述](READMEimg/5fcb6f921d2b407dac87171abec91c29.png) 在redis中存储的key为 ```java testParamsPost_RequestParam{name='张三', age=1} ``` 如果传入的实体类,则会默认调用传入类的tostring方法: ![在这里插入图片描述](READMEimg/c3704733889c4945b7c127a70367312a.png) 完整代码: [Simple Cache Spring Boot Starter](https://gitee.com/antopen/simple-cache-spring-boot-starter/tree/1.2.0/) [Simple Cache Spring Boot 快速启动代码 ](https://gitee.com/antopen/simple-cache-quickstart/tree/springboot-starter/) 后续版本考虑: - 添加el表达式,可以自定义key的名称 (1.3.1 完成) - 缓存默认添加分布式锁 - 支持锁自动续约时间 - 支持集群和哨兵模式 **如果有建议欢迎提出** 如果你也想参加开源项目欢迎加入[蚂蚁开源 ](https://gitee.com/antopen) ![在这里插入图片描述](READMEimg/70ba4afaa19743009cf54a504e6439e7.png) **本次更新主要是给大家带来了simple-cache的springboot版本,相较于之前的版本,这个版本添加了一些新特性和改进,如:** - 添加了springboot项目支持; - 去除了redisconfig类,避免了redis的单机和集群问题; - 用户可以自定义使用自己项目中的redisTemplate的bean,只需要配置redisTemplate的名称; - RedisCache注解添加了返回类型和添加了TimeUnit。 **使用simple-cache的springboot版本也十分简单,只需要:** 1. 引入simple-cache-spring-boot-starter依赖; 2. 在启动类加上@EnableSimpleCache注解; 3. 在配置文件中填写属于你自己项目的redistemplate的bean的名称; 4. 在你的业务类方法上添加注解RedisCache。 此外,在RedisCache注解中还有一些可选属性,比如缓存的key、缓存的时间、缓存的单位、返回类型等,使用起来也十分灵活方便。 总之,使用simple-cache可以轻松实现缓存,提高系统的访问速度和性能,非常适合于中小型项目的缓存需求。