【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可以轻松实现缓存,提高系统的访问速度和性能,非常适合于中小型项目的缓存需求。

相关推荐
希冀12319 分钟前
【操作系统】1.2操作系统的发展与分类
后端
华为云开源42 分钟前
openGemini 社区人才培养计划:助力成长,培养新一代云原生数据库人才
数据库·云原生·开源
GoppViper1 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
爱上语文2 小时前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
serve the people2 小时前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端
铁匠匠匠6 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
罗政7 小时前
[附源码]超简洁个人博客网站搭建+SpringBoot+Vue前后端分离
vue.js·spring boot·后端
拾光师9 小时前
spring获取当前request
java·后端·spring
Java小白笔记10 小时前
关于使用Mybatis-Plus 自动填充功能失效问题
spring boot·后端·mybatis
JOJO___12 小时前
Spring IoC 配置类 总结
java·后端·spring·java-ee