spring boot整合 Redis

Spring Boot 整合 Redis

  1. pom.xml依赖:
		  <!-- redis依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency>
  1. application.yml配置
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: 5508769123data:#Redis 相关配置redis:host: localhostport: 6379  #Redis端口号,具体可在Redis的.conf文件中查看#password: 123456database: 0jedis:#Redis连接池配置pool:max-active: 8max-wait: 1msmax-idle: 4min-idle: 0cache:redis:time-to-live: 1800000 #设置缓存过期时间单位毫秒ms
  1. 在启动类上添加@EnableCaching注解
package com.mercurows;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;@SpringBootApplication
@EnableCaching
public class SpringbootCacheDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootCacheDemoApplication.class, args);}
}
  1. 在需要的地方进行Cache缓存操作,这里在controller中(框架为springboot)
package com.mercurows.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mercurows.entity.User;
import com.mercurows.service.UserService;import lombok.extern.slf4j.Slf4j;@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {@Autowiredprivate CacheManager cacheManager;@Autowiredprivate UserService userService;/*** CahcePut:将方法返回值放入缓存* @Cacheable不同的是使用@CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。* value:缓存的名称,每个缓存名称下面可以有多个key* key:缓存的key*/@CachePut(value = "userCache",key = "#user.id")@PostMappingpublic User save(User user) {userService.save(user);return user;}/*** CacheEvict:清理指定缓存* value:缓存的名称,每个缓存名称下面可以有多个key,同时也是指定清理缓存的名称* key:缓存的key* allEntries:表明清理缓存时直接清理所有的*/@CacheEvict(value = "userCache", key = "#p0",allEntries = true)// @CacheEvict(value = "userCache",key = "#root.args[0]")// @CacheEvict(value = "userCache",key = "#id")@DeleteMapping("/{id}")public void delete(@PathVariable Long id) {userService.removeById(id);}// @CacheEvict(value = "userCache",key = "#p0.id")// @CacheEvict(value = "userCache",key = "#user.id")// @CacheEvict(value = "userCache",key = "#root.args[0].id")@CacheEvict(value = "userCache",key = "#result.id")@PutMappingpublic User update(User user) {userService.updateById(user);return user;}/*** Cacheable:在方法执行强spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据,* 若没有数据则将方法结果存入缓存、* value:缓存的名称,每个缓存名称下面可以有多个key* key:缓存的key* unless:满足条件则不缓存,即下次仍为null时还走查询而不是走缓存*/@Cacheable(value = "userCache", key = "#id",unless = "#result == null")@GetMapping("/{id}")public User getById(@PathVariable Long id) {User user = userService.getById(id);return user;}@Cacheable(value = "userCache",key = "#user.id+'_'+#user.name")@GetMapping("/list")public List<User> list(User user) {LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(user.getId() != null, User::getId, user.getId());queryWrapper.eq(user.getName() != null, User::getName, user.getName());List<User> list = userService.list(queryWrapper);return list;}
}

value的作用就是给被缓存的方法起个名字,下次再请求这个方法的时候就知道去找那个缓存了。

缓存的实际结果通常是根据方法的参数计算得到的。每个不同的参数组合可以产生不同的缓存结果。这些缓存结果通常是以键值对(key-value pairs)的形式存储的,其中键(key)是用于标识不同参数组合的唯一标识,而值(value)则是对应的方法执行结果。

当使用value属性来定义缓存名称时,通常是在缓存配置中将这个名称与具体的方法和其参数关联起来。在缓存中,会维护一个键值对的数据结构,其中键是由方法的参数组成的,而值是方法执行的结果。

  • 引用:Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用

启动项目时记得 启动redis服务:redis-server.exe文件

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

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

相关文章

基于卷积神经网络的图像识别-案例实施1

案例描述 学习如何搭建CNN卷积神经网络&#xff0c;训练cifar-10数据&#xff0c;识别图片中的内容。 案例分析 cifar-10是由Hinton的学生Alex Krizhevsky和Ilya Sutskever整理的一个用于识别普适物体的小型数据集。一共包含 10个类别的 RGB 彩色图 片&#xff1a;飞机&…

节日灯饰灯串灯出口欧洲CE认证检测

灯串&#xff08;灯带&#xff09;&#xff0c;这个产品的形状就象一根带子一样&#xff0c;再加上产品的主要原件就是LED&#xff0c;因此叫做灯串或者灯带。2022年&#xff0c;我国灯具及相关配件产品出口总额超过460亿美元。其中北美是最大的出口市场。其次是欧洲市场&#…

【网络安全---XSS漏洞(1)】XSS漏洞原理,产生原因,以及XSS漏洞的分类。附带案例和payload让你快速学习XSS漏洞

以pikachu靶场为例子进行讲解&#xff0c;pikachu靶场的搭建请参考以下博客&#xff1b; 【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程&#xff08;提供靶场代码及工具&#xff09;_网络安全_Aini的博客-CSDN博客【网路安全 --- pikachu靶场安装】超详细的pi…

JavaEE初阶学习:HTTP协议和Tomcat

1. HTTP协议 HTTP协议是一个非常广泛的应用层协议~~ 应用层协议 —> TCP IP 协议栈 应用层 —> 关注数据怎么使用~ 传输层 —> 关注的是整个传输的起点和终点 网络层 —> 地址管理 路由选择 数据链路层 —> 相邻节点之间的数据转发 物理层 —> 基础设置,硬…

【数据结构】链表详解

大家好&#xff0c;今天为大家分享一下第二个数据结构——单链表 先打个广告&#xff1a;这里是博主写道顺序表&#xff0c;大家也可以查看&#xff1a;顺序表详解 首先&#xff1a; 我们学完顺序表的时候&#xff0c;我们发现有以下问题&#xff1a; 中间/头部的插入删除&…

ansible角色运行指定角色路径

众所周知ansible默认角色路径为&#xff1a;/usr/share/ansible/roles目录 而用户默认安装角色路径为$HOME/.ansible/roles/目录。 如果我们不想修改ansible配置文件又想在任意目录基于运行角色部署服务&#xff0c;需要在ansible剧本中 指定角色路径。 分享剧本如下&#x…

tcpdump(四)命令行参数讲解(三)

一 BPF高级过滤条件 高级filter官方地址 常见需求案例汇总 过滤的目的&#xff1a;获取最精细、准确的数据思考&#xff1a; 抓取更精确的包?1) tcp/ip 报文结构要精通,这样才能知道如何获取自己想要的信息 -> 偏移量2) tcpdump 的synax语法要精通,要正确写对3) 多练习…

【洛谷 P1152】欢乐的跳 题解(枚举+位集合)

欢乐的跳 题目描述 一个 n n n 个元素的整数数组&#xff0c;如果数组两个连续元素之间差的绝对值包括了 [ 1 , n − 1 ] [1,n-1] [1,n−1] 之间的所有整数&#xff0c;则称之符合“欢乐的跳”&#xff0c;如数组 { 1 , 4 , 2 , 3 } \{1,4,2,3\} {1,4,2,3} 符合“欢乐的跳…

【kerberos】win环境下kerberos认证工具类

本案例在测试中很实用噢&#xff01; 上代码&#xff1a; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.UserGroupInformation; import java.io.IOException;public class KerberosProvider {public static final String krb5Conf &quo…

MES生产执行解决方案提供商,可定制工厂MES精益制造管理系统-亿发

亿发智能制造MES系统&#xff1a;驱动制造业创新&#xff0c;实现数字化生产和管理 MES管理系统以实时协同思想为核心&#xff0c;着重于精益生产计划的实施和车间实时调度。对生产现场和业务经营的数据进行全面的系统化管理&#xff0c;以数据分析的结果为基础&#xff0c;协助…

大数据与Hadoop入门理论

一、大数据的3种数据类型 1、结构化数据 可定义&#xff0c;有类型、格式、结构的强制约束 如&#xff1a;RDBMS&#xff08;关系型数据库管理系统&#xff09; 2、非结构化数据 没有规律没有数据约束可言&#xff0c;很复杂难以解析 如&#xff1a;文本文件&#xff0c;视…

vue脚手架项目创建及整理

环境准备 首先安装node,如果项目需要指定node版本 可以按装nvm控制版本 创建vue vue create 项目名选择对应版本 这边我是选的自定义&#xff0c;就是第三个选项&#xff0c;可以提前给我下好 router vuex什么的&#xff08;空格&#xff09; 选项如图标注 等待下载所需的…

记录在搭建Jenkins时,所遇到的坑,以及解决方案

项目场景&#xff1a; 记录在搭建Jenkins时,所遇到的坑,以及解决方案.问题描述1 在使用Jenkins构建时,报错如下&#xff1a; cp: cannot stat /project/xx/xxxx/dist/: No such file or directory Build step Execute shell marked build as failure Finished: FAILURE解决方…

接口测试复习Requests PyMysql Dubbo

一。基本概念 接口概念&#xff1a;系统与系统之间 数据交互的通道。 接⼝测试概念&#xff1a;校验 预期结果 与 实际结果 是否⼀致。 特征&#xff1a; 测试⻚⾯测试发现不了的问题。&#xff08;因为&#xff1a;接⼝测试 绕过前端界⾯。 &#xff09; 符合质量控制前移理…

Jupyter notebook怎么设置自动跳转问题

1.点击开始&#xff0c;就可以看到Jupyter&#xff0c;然后点击 2.结果就这样&#xff1a; 3你可以复制地址到浏览器&#xff0c;结果&#xff1a; 但是这么做很麻烦&#xff0c;所以有没有更好的办法呢&#xff1f;当然有下面就开始介绍 1.打开cmd(winr,输入cmd),输入以下命令…

YAMLException : java.nio.charset.MalformedInputException : Input length = 1

场景还原 有小伙伴反应SpringBoot项目启动异常&#xff0c;但是同组其他伙伴的无问题&#xff01; ERROR org.springframework.boot.SpringApplication - Application run failedorg.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException : Inpu…

AMEYA360分析:纳芯微推出超低功耗TMR开关/锁存器 NSM105x系列

纳芯微推出基于隧道磁阻 (TMR) 的超低功耗磁开关/锁存器NSM105x系列&#xff0c;为数字位置检测提供高精度的解决方案&#xff0c;可被广泛应用于工业与消费领域的位置检测。 NSM105x产品系列包含了3个产品型号&#xff0c;即NSM1051(单极开关)、NSM1052(全极开关)、NSM1053(锁…

Linux-ubuntu系统查看显卡型号、显卡信息详解

lspci | grep -i vga #----output------ 01:00.0 VGA compatible controller: NVIDIA Corporation Device 2504 (rev a1) PCI devices

基于生物地理学优化的BP神经网络(分类应用) - 附代码

基于生物地理学优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于生物地理学优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.生物地理学优化BP神经网络3.1 BP神经网络参数设置3.2 生物地理学算法应用 4…