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

news2024/11/25 18:39:31

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

这次主要更新的内容为:

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

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

simple-cache-spring-boot-starter

在这里插入图片描述

使用方法

  • 🐋第一步,在项目中引入`simple-cache-spring-boot-starter`
  • 🐋第二步,在启动类加上`@EnableSimpleCache`注解
  • 🐋第三步,在配置文件中填写属于你自己项目的redistemplate的bean的名称
  • 🐋第四步,在你的业务类方法上添加注解RedisCache

前置条件:

首先你的项目需要有自带的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可选值

属性类型必须指定默认值描述
keystring缓存的key,可以自定义
expirelong1(一天)缓存的时间,可以修改
unitTimeUnitTimeUnit.DAYS(一天)缓存的单位,可以修改
resultClassClass<?>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版本也十分简单,只需要:

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/587699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python之字符串(str)基础知识点

strip() 删除指定字符 当token为空时,默认删除空白符(含’\n’,‘\r’,‘\t’,’ )&#xff0c;当非空时&#xff0c;根据指定的token进行删除。 字符的删除又可分为以下几种情况&#xff1a; string.strip(token)&#xff1a;删除string字符串中开头(left)、结尾处(right)的…

【操作系统】02.进程管理

多道程序系统 多道就是将多个程序同时装入内存&#xff0c;使之并发运行。操作系统也是基于多道产生的&#xff0c;提高了资源利用率和系统吞吐量。 进程 定义 进程是程序的一次执行 进程是进程实体的运行过程&#xff0c;是系统进行资源分配和调度的一个独立单位 在引入线…

会流程图却不会UML活动图?活动图深度剖析,就怕你学不会!

1. UML活动图是啥&#xff1f; 也许很多人都不怎么了解活动图&#xff0c;但是却对流程图很熟悉&#xff0c;你暂且可以简单的把活动图理解为UML里的流程图&#xff0c;用来描述系统的行为特征。不过UML活动图对比于流程图来说也存在不少差异&#xff0c;本文将在第三章节讲解活…

解决 MobaXterm X11 server 打开 wsl2 linux 子系统 rviz 可视化窗口卡顿问题

1、问题 环境&#xff1a; MobaXtermwsl2 Ubuntu-18.04ROS1Intel 核显 一直使用 MobaXterm 这个远程软件 ssh 链接 linux 服务器&#xff0c;因为它集成了 X11 server&#xff0c;即可以显示一些 linux 下有图形化界面的程序&#xff0c;如 ROS 的 rviz 等。 但是 MobaXterm…

宝塔面板一键部署Z-Blog博客 - 内网穿透实现公网访问

文章目录 1.前言2.网站搭建2.1. 网页下载和安装2.2.网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测试5.结语 转发自cpolar极点云的…

一步一步的实现使用 Tensorflow Hub 进行图像分割

在本文中&#xff0c;我们将学习如何使用 TensorFlow Hub中提供的预训练模型执行语义图像分割。TensorFlow Hub 是一个库和平台&#xff0c;旨在共享、发现和重用预训练的机器学习模型。TensorFlow Hub 的主要目标是简化重用现有模型的过程&#xff0c;从而促进协作、减少冗余工…

[比赛简介]ICR - Identifying Age-Related Conditions

比赛链接&#xff1a;https://www.kaggle.com/competitions/icr-identify-age-related-conditions 比赛简介 本次比赛的目标是预测一个人是否患有三种疾病中的任何一种。您被要求预测该人是否患有三种疾病中的任何一种或多种&#xff08;1 类&#xff09;&#xff0c;或者三种…

第14届蓝桥杯Scratch选拔赛(STEMA) 真题集锦

一、选择题 第 1题单选题 运行以下程序 (小象仅有两个造型),小象的造型是哪个? () 答案 A 解析 本题正确答案是A,考察的知识点是角色造型,在Scratch中,切换造型有两个指令,分别是“换成xx造型“和“下一个造型”,其中前者将角色切换为指定造型,而后者则从当前造型切换…

面向小白的最全Python数据分析指南,超全的!

因工作需求经常会面试一些数据分析师&#xff0c;一些 coding 能力很强的小伙伴&#xff0c;当被问及数据分析方法论时一脸懵逼的&#xff0c;或者理所当然的认为就是写代码啊&#xff0c;在文章开头先来解释一下数据分析。 数据分析是通过明确分析目的&#xff0c;梳理并确定…

虎牙在全球 DNS 秒级生效上的实践

博主介绍&#xff1a;✌全网粉丝4W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面…

六级备考18天|CET-6|写作第一讲|现象解释|10:00~10:45

目录 1. 议论文类型 现象解释 what,why,importance 观点选择 whether,choice,option 问题解决 how to,measures 图片图表 image,cartoon,diagram,chart 2. 基本题型 议论文、图表、谚语 3. 模版构成/段落结构划分 三个段落&#xff1a;10-11句 背景主题句过渡句 …

电加热道岔融雪系统设备

设备构成 融雪设备由道岔融雪远程控制中心工作站(以下简称工作站)、道岔融雪车站控制终端(以下简称控制终端)、道岔融雪控制柜(以下简称控制柜)、钢轨温度传感器、电加热元件、道岔融雪隔离变压器(以下简称隔离变压器)等组成。 01集中供电方式 02分散供电方式 设备型号及含义…

本地新建项目,git 到gitlab中

目录 1、首先&#xff0c;gitlab中&#xff0c;创建一个空项目 2. 本地项目上 操作 1&#xff09; git init 2) 关联远程仓库 3&#xff09;git pull 4) 查看远程分支 5&#xff09;指定git pull 远程哪个分支 6&#xff09;关联远程分支 7&#xff09; .gitignore …

批量处理同列的相同值,合并成一个单元格

效果 易错点 选中公司部门的时候,选择是数据的开始的第一行和最后一行居中和合并完后,选择的也是公司部门的数据开始第一行和最后一行; 操作方法 1、 鼠标悬浮到你要合并的任意一栏 2、 选择菜单-数据汇总 3. 这两个值&#xff0c;要选择要分组的列名&#xff0c;求和方式…

【Unity】基于GLTFUtility插件加载gltf格式数据

C#代码&#xff1a;JSON数据解析 一、环境配置1. GLTFUtility项目git地址2. 安装支持工具&#xff1a;搜索Newtonsoft.Json并安装 二、代码调用1. 单线程加载GLTF/GLB2. 多线程加载GLTF3. 多线程加载GLB 三、加载参考案例1. 创建基础UI2. 挂接脚本到ReaderGLTF对象3. 加载结果 …

Flink从入门到精通之-11Table API 和 SQL

Flink从入门到精通之-11Table API 和 SQL 如图 11-1 所示&#xff0c;在 Flink 提供的多层级 API 中&#xff0c;核心是 DataStream API&#xff0c;这是我们开发流处理应用的基本途径&#xff1b;底层则是所谓的处理函数&#xff08;process function&#xff09;&#xff0c…

【八】设计模式~~~结构型模式~~~装饰模式(Java)

【学习难度&#xff1a;★★★☆☆&#xff0c;使用频率&#xff1a;★★★☆☆】 3.1. 模式动机 一般有两种方式可以实现给一个类或对象增加行为&#xff1a; 继承机制&#xff0c;使用继承机制是给现有类添加功能的一种有效途径&#xff0c;通过继承一个现有类可以使得子类…

当APP进入推荐榜,我们需要做些什么

在苹果的应用商店内&#xff0c;“today标签页”和“热门推荐页”的曝光率会更高些&#xff0c;更新时间都是每周五的上午八点前后&#xff0c;热门推荐页的占比权重大&#xff0c;是获取流量的重大突破口&#xff0c;如果应用本身优秀&#xff0c;还可获得更好的下载转化率。 …

华为OD机试之模拟商场优惠打折(Java源码)

模拟商场优惠打折 题目描述 模拟商场优惠打折&#xff0c;有三种优惠券可以用&#xff0c;满减券、打折券和无门槛券。 满减券&#xff1a;满100减10&#xff0c;满200减20&#xff0c;满300减30&#xff0c;满400减40&#xff0c;以此类推不限制使用&#xff1b; 打折券&…

后端 API 接口文档 Swagger 使用指南

前言一&#xff1a;swagger是什么&#xff1f;二&#xff1a;为什么要使用swaager? 2.1:对于后端开发人员来说2.2:对于前端开发来说2.3&#xff1a;对于测试三&#xff1a;如何搭一个swagger 3.1:引入swagger的依赖3.2&#xff1a;springBoot整合swagger3.3&#xff1a;swagge…