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

相关推荐
XINGTECODE3 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
程序猿进阶9 分钟前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
FIN技术铺14 分钟前
Spring Boot框架Starter组件整理
java·spring boot·后端
凡人的AI工具箱36 分钟前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
先天牛马圣体41 分钟前
如何提升大型AI模型的智能水平
后端
java亮小白199744 分钟前
Spring循环依赖如何解决的?
java·后端·spring
2301_811274311 小时前
大数据基于Spring Boot的化妆品推荐系统的设计与实现
大数据·spring boot·后端
草莓base2 小时前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring
Ljw...2 小时前
表的增删改查(MySQL)
数据库·后端·mysql·表的增删查改
编程重生之路2 小时前
Springboot启动异常 错误: 找不到或无法加载主类 xxx.Application异常
java·spring boot·后端