当前位置: 首页 > news >正文

springboot配置redis、Spring cache

1.Jedis库

依赖库

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.0.2</version>
</dependency>

使用案例:

 @Testpublic void jedis(){Jedis jedis = new Jedis("127.0.0.1", 6379);jedis.set("name","yi");jedis.close();}

2.springboot官方编写的整合库

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>3.1.5</version></dependency>

使用案例:

 	@Autowiredprivate RedisTemplate redisTemplate;//通过自动注入@Testpublic void t(){//使用opsFor系列方法获取xxxOperations对象ValueOperations valueOperations = redisTemplate.opsForValue();valueOperations.set("name3","yi");HashOperations hashOperations = redisTemplate.opsForHash();hashOperations.put("student","name","yi");hashOperations.put("student","age","18");String age = (String) hashOperations.get("student", "age");}

RedisTemplate默认使用 JdkSerializationRedisSerializer 进行序列化。
序列化的key结果为:
在这里插入图片描述

为什么是这样一串奇怪的 16 进制? ObjectOutputStream#writeString(String str, boolean unshared) 实际就是标志位 + 字符串长度 + 字符串内容

如果需要redis中设定的key值与我们在程序中设定的值相同,则需要改变序列化的方式,即自定义RedisTemplate。
创建一个配置类来定义RedisTemplate Bean,设置序列化方式 StringRedisSerializer。

@Configuration
public class RedisConfiguration extends CachingConfigurerSupport {@BeanRedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){RedisTemplate<Object,Object> redisTemplate = new RedisTemplate();redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setConnectionFactory(redisConnectionFactory);return redisTemplate;}
}

3.Spring cache

通过注解来新增/删除缓存。

配置信息:

引入redis架包:

  <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>3.1.5</version></dependency>

指定缓存的类型为redis,并配置redis IP端口号

#application.yml:
spring:redis:host: 127.0.0.1port: 6379database: 0cache:type: redis

操作步骤

  1. 在启动类上加入@EnableCaching,开启缓存功能
  2. 注入CacheManager,选择缓存实现方法
    @Autowired
    private CacheManager cacheManager;
  3. 在需要cache操作的方法上加上相关注解

注解

@CachePut

使用 @CachePut 注解就能够将方法的返回值放到缓存中,使用该注解时可以指定以下几个参数:

参数解释example
value缓存的名称,每个缓存名称下可以有多个 key,必须指定至少一个@CachePut(value=“my cache”)
key缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,默认按照方法的所有参数进行组合@CachePut(value=“testcache”, key=“#user.id”)
condition缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存@CachePut(value=“testcache”, condition=“#userName.length()>2”)
@CacheEvict

使用 @CacheEvict 注解就能够将一条或多条数据从缓存中删除,使用该注解时可以指定以下几个参数:

参数解释example
value缓存的名称,每个缓存名称下可以有多个 key,必须指定至少一个@CacheEvict(value=“my cache”)
key缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,默认按照方法的所有参数进行组合@CacheEvict(value=“testcache”, key=“#id”)
condition缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行清空缓存@CacheEvict(value=“testcache”, condition=“#userName.length()>2”)
allEntries是否清空所有缓存内容,默认为 false,如果指定为 true,则方法调用后将立即清空所有缓存@CachEvict(value=“testcache”, allEntries=true)
beforeInvocation是否在方法执行前就清空,默认为 false,如果指定为 true,则在方法还没有执行的时候就清空缓存,缺省情况下,如果方法执行抛出异常,则不会清空缓存@CachEvict(value=“testcache”,beforeInvocation=true)
@Cacheable

使用 @Cacheable 注解,在方法执行前 Spring 会先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中。使用该注解时可以指定以下几个参数:

参数解释example
value缓存的名称,每个缓存名称下可以有多个 key,必须指定至少一个例如: @Cacheable(value=“mycache”) @Cacheable(value={“cache1”, “cache2”}
key缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,默认按照方法的所有参数进行组合@Cacheable(value=“testcache”, key=“#userName”)
condition缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存@Cacheable(value=“testcache”, condition=“#userName.length()>2”)
unless与 condition 相反,满足条件的时候则不缓存数据@Cacheable(value=“testcache”, unless=“#result == null”)

相关文章:

springboot配置redis、Spring cache

1.Jedis库 依赖库 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.0.2</version> </dependency>使用案例&#xff1a; Testpublic void jedis(){Jedis jedis new Jedis("127…...

悟空crm安装搭建 报错[0] RedisException in Redis.php line 56问题处理办法

相信很多朋友进行安装悟空crm的时候 提示错误&#xff1a; [0] RedisException in Redis.php line 56 Connection refused 不知道怎么样处理是吧~~~ $this->options array_merge($this->options, $options);}# redis 密码$password config(cache.password);if (!empty…...

Ubuntu22.04 交叉编译阿里oss c-sdk

一、交叉编译openssl Ubuntu20.04 交叉编译openssl 1.0.1f_编译前去除 makefile 中所有的"-m64"字段_qq76211822的博客-CSDN博客文章浏览阅读319次。Ubuntu20.04 交叉编译openssl_编译前去除 makefile 中所有的"-m64"字段https://blog.csdn.net/sz7621182…...

arch linux 安装 vsftpd 配置虚拟用户

后面操作会直接基于 yay 操作 自行查找如何安装 yay 公司经常会用到 ftp 服务 不想用 apache 的 ftp server 所以自己在小机器上撞了 arch linux 用来安装软件 跑程序等。 1. 安装 vsftpd yay vsftpd --noconfirm选择 1 安装 输入密码 2. 安装 pam_pwdfile 安装 pam_pwdf…...

Django的查询所有,根据用户名查询,增加用户操作

1.路由 from meiduo_admin.user.user_views import UsersViewurlpatterns [# 用户操作路由path(users/, UsersView.as_view()), ]2. 序列化器 from rest_framework import serializersfrom meiduo_admin.models import Userclass UsersSerialize(serializers.ModelSerialize…...

【adb】adb相关命令行及adb传输文件权限问题 remote couldn‘t create file: Read-only file system

adb传输文件权限问题 今天用adb push的时候&#xff0c;报错说并非root权限 remote couldnt create file: Read-only file system 以下是adb相关命令一、非root权限解决方案 1️⃣运行以下命令行 adb root adb remount2️⃣如果还报错&#xff0c;则运行以下命令行 adb disab…...

基于物联网云平台的分布式光伏监控系统的设计与实现

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;针对国内光伏发电监控系统的研究现状&#xff0c;文中提出了基于云平台的光伏发电监控体系。构建基于B/S架构的数据实时采集与推送&#xff0c;以SSH(strutsspringhibernate)作为Web开发框架&#xff0c;开发基…...

初识Node.js开发

一、Node.js是什么 1.node.js是什么 官方对Node.js的定义&#xff1a; Node.js是一个基于V8 JavaScript引擎的JavaScript运行时环境。 也就是说Node.js基于V8引擎来执行JavaScript的代码&#xff0c;但是不仅仅只有V8引擎&#xff1a; 前面我们知道V8可以嵌入到任何C 应用…...

【Python入门教程】基于OpenCV视频分解成图片+图片组合成视频(视频抽帧组帧)

在人工智能爆火的今天&#xff0c;深度学习被广泛应用于各个领域。深度学习的模型训练离不开大量的样本库。我之前分享过【Python爬虫】批量爬取网页的图片&制作数据集&#xff0c;今天跟大家分享一下如何使用OpenCV库对视频进行抽帧&#xff0c;从而增加样本图片的数量。正…...

微前端qiankun接入Vue和React项目

主应用&#xff1a;Vue3Webpack 1、创建主应用&#xff1a; npx vue create main-vue3-app 2、安装qiankun npx yarn add qiankun 3、项目中使用的vue、vue-router、qiankun依赖如下&#xff0c;webpack版本为5.x 4、在根目录下创建vue.config.js const { defineConfig }…...

提升技能,一触即达!全新在线题库微信小程序等你来挑战!

亲爱的同学们&#xff0c;你是否在准备各种专业认证考试时&#xff0c;感到题目繁多&#xff0c;复习困难&#xff1f;你是否在寻找一个能够提供全方位、各级别认证考试题库的在线学习平台&#xff1f; 今天&#xff0c;我们为你带来了一款全新的在线题库微信小程序——KD蝌蚪阿…...

语雀P0级故障复盘,有9个字亮了

大家好&#xff0c;我是洋子 最近语雀不是出了个号称 “载入史册” 的 P0 级事故嘛 —— 连续宕机接近8个小时无法使用&#xff0c;作为一个大厂知名产品&#xff0c;这个修复速度属实让人无法理解 故障公告原文&#xff1a;https://mp.weixin.qq.com/s/WFLLU8R4bmiqv6OGa-QMc…...

在 openresty 中使用 capnp lua 库

1. 安装必要的工具和库 apt-get install capnproto luarocksluarocks install lua-capnproto luarocks install lua-cjsonlua-cjson 库不是必须的&#xff0c;是由于后面的演示程序要使用&#xff0c;就一起装上了。 可以看下库的安装位置&#xff1a; root350983744ebf:~# …...

私藏小技巧:让微信朋友圈营销方便化的小窍门!

微信&#xff0c;这个拥有十亿用户的社交软件&#xff0c;已经成为生活中不可或缺的一部分。 而朋友圈&#xff0c;这个微信的基础功能&#xff0c;是聚宝盆&#xff0c;也是一切流量的尽头。 现在公域&#xff0b;私域的流量增长变现体系很火。朋友圈是一切公域流量的尽头&a…...

Centos使用tomcat部署jenkins

jenkins的最新版本已经不在支持jdk8&#xff0c;支持的jdk环境如下&#xff1a; 安装jdk环境 yum -y install java-11-openjdk.x86_64 java-11-openjdk-devel.x86_64安装tomcat tomcat官网 cd /optwget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.82/bin/apache-tomcat…...

uni-app打包apk实现自动更新

一、直接复制粘贴就可用(豪横) app.vue文件里写 //app.vue里写 <script>export default {onShow: function() {console.log(App Show)},onHide: function() {console.log(App Hide)},onLaunch: function() {let appVersion uni.getSystemInfo({success: function(e) {ap…...

SRS srs-bench

1 srs-bench 音视频压测工具&#xff0c;包括RTMP/FLV/WebRTC/GB28181等&#xff0c;未来还会完善。 SB(SRS Bench) is a set of benchmark and regression test tools, for SRS and other media servers, supports HTTP-FLV, RTMP, HLS, WebRTC and GB28181. For RTMP/HLS/F…...

HackTheBox-Starting Point--Tier 1---Appointment

文章目录 一 题目二 实验过程 一 题目 Tags Web、Databases、Injection、Apache、MariaDB、PHP、SQL、Reconnaissance、SQL Injection译文&#xff1a;Web、数据库、注入、Apache、MariaDB、PHP、SQL、侦察、SQL 注入Connect To attack the target machine, you must be on …...

【工具】Java请求带http重定向的地址 自动进行重定向

【工具】Java请求带http重定向的地址 自动进行重定向 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL;public class HTTPGETWithMultipleHeaders {public static voi…...

接口自动化测试方案

1、引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 V1.0 项目经理 XX 测试人员 XXXXX&#xff0c;XXX 所属部门 XX 备注 1.3 文档目的 本文档主要用于指导XXX-YY项目常用接口自动化测试…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...