【simple-cache】一款只用一个注解就实现缓存的框架-我们终于迎来了SpringBoot版本

上次我们讲了【simple-cache】的使用: 【simple-cache】我开发了一款只要一个注解就可以轻松实现缓存的框架 这次主要更新的内容为:

  • 添加springboot项目
  • 框架中去除了redisconfig类,避免了redis的单机和集群问题
  • 用户可以自定义使用自己项目中的redisTemplate的bean,只需要配置redisTemplate的名称
  • RedisCache注解添加了返回类型和添加了TimeUnit

这次给大家带来了【simple-cache】的springboot版本:

simple-cache-spring-boot-starter

前置条件:

首先你的项目需要有自带的redistemplate类,如果没有则可以参考下面的配置:

java 复制代码
@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则无需再引入):

单机模式

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 复制代码
 	    <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

ini 复制代码
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_张三_男

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);
    }

在redis中存储的key为

java 复制代码
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版本也十分简单,只需要:

  1. 引入simple-cache-spring-boot-starter依赖;
  2. 在启动类加上@EnableSimpleCache注解;
  3. 在配置文件中填写属于你自己项目的redistemplate的bean的名称;
  4. 在你的业务类方法上添加注解RedisCache。

此外,在RedisCache注解中还有一些可选属性,比如缓存的key、缓存的时间、缓存的单位、返回类型等,使用起来也十分灵活方便。

总之,使用simple-cache可以轻松实现缓存,提高系统的访问速度和性能,非常适合于中小型项目的缓存需求。

相关推荐
程序员爱钓鱼26 分钟前
Go语言实战案例-创建模型并自动迁移
后端·google·go
javachen__31 分钟前
SpringBoot整合P6Spy实现全链路SQL监控
spring boot·后端·sql
uzong6 小时前
技术故障复盘模版
后端
GetcharZp6 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程7 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
IT毕设实战小研7 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi7 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
阿华的代码王国8 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Jimmy8 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
AntBlack9 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt