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

redis学习(三)——java整合redis

Jedis

Jedis可以用于java连接redis数据库

新建一个maven项目,导入Jedis依赖

<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version><scope>test</scope>
</dependency>
public class RedisTest {private Jedis jedis;@BeforeEachvoid setUp() {// 建立连接jedis = new Jedis("192.168.211.132", 6379);// 设置密码//jedis.auth("123456");// 选择库jedis.select(0);}@Testvoid testString() {// 插入数据,方法名称就是redis命令名称,非常简单String result = jedis.set("name", "李四");System.out.println("result = " + result);// 获取数据String name = jedis.get("name");System.out.println("name = " + name);}@AfterEachvoid tearDown() {// 释放资源if (jedis != null) {jedis.close();}}
}

运行结果:

在这里插入图片描述

如果运行报Failed to resolve org.junit.platform:junit-platform-launcher:1.8.2可能是由于IDEA版本的问题,可以试一下添加以下依赖

<!--        Failed to resolve org.junit.platform:junit-platform-launcher:1.8.2-->
<dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-launcher</artifactId><scope>test</scope>
</dependency>
Jedis连接池

Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,推荐使用Jedis连接池

public class JedisConnectionFactory {private static final JedisPool jedisPool;static {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();// 最大连接jedisPoolConfig.setMaxTotal(8);// 最大空闲连接jedisPoolConfig.setMaxIdle(8);// 最小空闲连接jedisPoolConfig.setMinIdle(0);// 设置最长等待时间, msjedisPoolConfig.setMaxWaitMillis(200);jedisPool = new JedisPool(jedisPoolConfig, "192.168.211.132", 6379, 1000);}// 获取Jedis对象public static Jedis getJedis() {return jedisPool.getResource();}
}
springboot整合redis

首先新建一个springboot项目

导入依赖,这里我后面会用到lombok和test测试,一并导入

       <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.7.5</version></dependency>
<!--        redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.7.5</version></dependency>
<!--        连接池依赖--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>

application.yml配置文件,配置文件加中文可能会出现问题,如果报错可以去掉中文再试试。

spring:redis:host: 00# redis数据库地址port: 6379  # 端口lettuce:pool:max-active: 8 # 最大连接max-idle: 8 # 最大空闲连接min-idle: 0 # 最小空闲连接max-wait: 100 # 连接等待时间database: 1  # 使用的数据库
redisTemplate使用

新建一个springbootTest类,然后注入redisTemplate,之后就可以使用redisTemplate对redis数据库进行操作了。其中opsForValue()表示对String类型的数据进行操作,如果想对Hash进行操作,使用opsForHash()即可,其余同理。

@SpringBootTest
class DemoApplicationTests {@Autowiredprivate RedisTemplate redisTemplate;/*** 在未添加redisConfig类之前,redisTemplate插入redis数据库会有其他序列化前缀,*/@Testvoid testString() {Object name = redisTemplate.opsForValue().get("zhangsan");redisTemplate.opsForValue().set("aaa", "测试");System.out.println(redisTemplate.opsForValue().get("aaa"));System.out.println(name);}
}

可以看到输出结果,如果使用redisTemplate插入redis1的数据就可以查找到,但是原来就有的数据查不到

在这里插入图片描述

再进redis数据库里面查看可以发现插入数据库中的键和值并不和想象中的一样。这是因为redisTemplate会将Object进行序列化
在这里插入图片描述

自定义RedisTemplate序列化

我们可以自定义redisTemplate的序列化方式

新建一个redisConfig类,key和value都采用String序列化方式

@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)throws UnknownHostException {// 创建TemplateRedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();// 设置连接工厂redisTemplate.setConnectionFactory(redisConnectionFactory);// 设置序列化工具GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();// key和 hashKey采用 string序列化redisTemplate.setKeySerializer(RedisSerializer.string());redisTemplate.setHashKeySerializer(RedisSerializer.string());// value和 hashValue采用 JSON序列化redisTemplate.setValueSerializer(jsonRedisSerializer);redisTemplate.setHashValueSerializer(jsonRedisSerializer);return redisTemplate;}
}

这里使用了jackson,需要导入一下依赖

<!--        jackson依赖--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency>

新建一个测试类试一下效果

/*** redisTemplate 序列化之后,可以自动将json字符串转化为实体类*/
@Test
void testStringBean() {redisTemplate.opsForValue().set("user:zhangsan", new User("zhangsan", "20", "男"));User user = (User)redisTemplate.opsForValue().get("user:zhangsan");System.out.println(user);
}

这里由于在序列化的时候还存储了实体类的类型,所以可以使用强转实现类型转换

在这里插入图片描述

在这里插入图片描述

使用StringRedisTemplate

StringRedisTemplate的key和value为String类型,可以在获取到json之后使用其他工具类或者手动实现序列化

    @Autowiredprivate StringRedisTemplate stringRedisTemplate;private static final ObjectMapper mapper = new ObjectMapper();
/*** 使用stringredisTemplate 获取对象为字符串,可以通过json工具转化为实体类,无法自动转化*/
@Test
void testStringRedisTemplate() throws Exception{System.out.println(stringRedisTemplate.opsForValue().get("lisi"));User u = new User("lisi","15", "男");stringRedisTemplate.opsForValue().set("user:lisi", mapper.writeValueAsString(u));String s = stringRedisTemplate.opsForValue().get("user:lisi");System.out.println(s);User user = mapper.readValue(s,User.class);System.out.println(user);
}

在这里插入图片描述

相关文章:

redis学习(三)——java整合redis

Jedis Jedis可以用于java连接redis数据库 新建一个maven项目&#xff0c;导入Jedis依赖 <dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version><scope>test…...

OpenText 安全取证软件——降低成本和风险的同时,简化电子取证流程

OpenText 安全取证软件&#xff0c;行业标准的数字调查解决方案&#xff0c;适用于各种规模和各种行业的组织 降低成本和复杂性 • 远程调查比轮流调查过程更有效 对结果持有信心 • 磁盘级可见性可以完成相关端点数据的搜索和收集 谨慎调查 • 完整的网络调查&#xf…...

【vue】vue前端、生产(线上)环境请求unicloud云服务空间axios报错

目录 原因总结&#xff1a;借助Nginx使得axios可跨域请求 原因 使用axios的时候&#xff0c;如果是开发环境下&#xff0c;WebStorm&#xff08;IDEA&#xff09;会自带跨域功能&#xff0c;说白了就是不用考虑跨域的事情了。但是在生产环境下&#xff0c;vue前端编译成静态文…...

JVM详解(InsCode AI 创作助手)

JVM是一个虚拟的计算机&#xff0c;它有自己的硬件架构&#xff0c;如处理器、堆栈和寄存器等&#xff0c;也有自己的指令系统。JVM的主要任务是负责加载、验证、编译和执行Java程序。 一、JVM参数默认配置如下 内存设置&#xff1a; 初始堆内存大小&#xff1a;物理内存的1/…...

华为c语言编程规范

提示&#xff1a;附件为编程规范 文章目录 前言一、华为c语言编程规范总结 前言 例如&#xff1a;华为规范下载 一、华为c语言编程规范 该处使用的url网络请求的数据。 总结 提示&#xff1a;这里对文章进行总结&#xff1a; 例如&#xff1a;以上就是今天要讲的内容&#xf…...

SQL Server Management Studio (SSMS)的安装教程

文章目录 SQL Server Management Studio (SSMS)的安装教程从Microsoft官网下载SQL Server Management Studio安装程序。选中安装程序右键并选择“以管理员的身份运行”选项选择安装目录&#xff0c;单击“安装”按钮开始安装过程安装成功界面安装完成后&#xff0c;您可以启动S…...

React 图片瀑布流

思路&#xff1a; 根据浏览器宽度&#xff0c;确定列数&#xff0c;请求的图片列表数据是列数的10倍&#xff0c;按列数取数据渲染 Index.js: import React from react import { connect } from react-redux import { withRouter } from react-router-dom import { SinglePag…...

C++数据结构X篇_21_插入排序(稳定的排序)

文章目录 1. 插入排序原理2. 算法图解3. 核心代码&#xff1a;4. 插入排序整体代码实现 1. 插入排序原理 插入排序是一种最简单直观的排序算法&#xff0c;它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相…...

【Unity】3D跑酷游戏

展示 finish_all * 方块跑酷 1.教程链接 翻墙&#xff1a;https://www.youtube.com/watch?v9ZEu_I-ido4&listPLPV2KyIb3jR53Jce9hP7G5xC4O9AgnOuL&index3 2.基础制作 最终成果 2.1 基本场景 1.创建Cube作为跑道 1&#xff09;记得把位置Reset&#xff1b; 2&#…...

bp前端验证码绕过及token绕过

前端验证码绕过及token绕过 原文参考&#xff1a;xiu 文章目录 前端验证码绕过及token绕过原文参考&#xff1a;[xiu](http://www.xiusafe.com/2023/10/25/%E9%AA%8C%E8%AF%81%E7%A0%81%E7%BB%95%E8%BF%87/)1 验证码爆破1. 登录Pikachu&#xff0c;先获取登录的api接口2 验证码…...

Jmeter(十四):跨线程组传递jmeter变量及cookie的处理详解

setUp线程组 setUp thread group 一种特殊类型的线程组&#xff0c;用于在执行常规线程组之前执行一些必要的操作。 在 setup线程组下提到的线程行为与普通线程组完全相同。不同的是执行顺序--- 它会在普通线程组执行之前被触发&#xff1b; 应用场景举例&#xff1a; A、测…...

css实现圆形进度条

能用现成组件就用&#xff0c;实现不行再自己写&#xff0c;因为牵扯到上传文件&#xff0c;进度实时出不来&#xff0c;所以只能使用dom元素操作&#xff1b; 1.实现 效果&#xff1a; 上图是100%&#xff0c;如果需要根据百分比显示&#xff0c;我们需要看下代码里面left和…...

适用于 Windows 10 和 Windows 11 设备的笔记本电脑管理软件

便携式计算机管理软件使 IT 管理员能够简化企业中使用的便携式计算机的部署和管理&#xff0c;当今大多数员工使用Windows 笔记本电脑作为他们的主要工作机器&#xff0c;他们确实已成为几乎每个组织不可或缺的一部分。由于与台式机相比&#xff0c;笔记本电脑足够便携&#xf…...

YOLOv5论文作图教程(1)— 软件介绍及下载安装(包括软件包+下载安装详细步骤)

前言:Hello大家好,我是小哥谈。在学习YOLOv5算法的过程中,很多同学都有发表论文的需求。作为文章内容的支撑,图表是最直接的整合数据的工具,能够更清晰地反映出研究对象的结果、流程或趋势。在发表论文的时候,审稿人除了关注论文的内容和排版外,也会审核图表是否清晰美观…...

AutoCAD 2024 Mac中文附激活补丁 兼容M1.M2电脑

AutoCAD 2024是一款功能强大的CAD设计绘图工具&#xff0c;旨在帮助用户创建和编辑高质量的设计图纸和模型。该软件支持2D和3D设计&#xff0c;具有丰富的功能和工具&#xff0c;可用于绘图、建模、注释、标注、尺寸设置等多种操作。AutoCAD 2024还引入了智能对象捕捉、实时预览…...

Jmeter基础---while控制器举例说明

一、 While 控制器 首先创建一个While Controller (While 循环控制器) ​​ 设置界面如下&#xff1a; Condition (function or variable) &#xff1a;条件说明 条件为 Flase 的时候&#xff0c;才会跳出 While 循环&#xff0c;否则一直执行 While 控制器下的样例 1、不填…...

正点原子嵌入式linux驱动开发——RGB转HDMI

目前大多数的显示器都提供了HDMI接口&#xff0c;HDMI的应用范围也越来越广&#xff0c;但是STM32MP157这颗芯片原生并不支持HDMI显示。可以通过RGB转HDMI芯片将RGB信号转为HDMI信号&#xff0c;这样就可以连接HDMI显示器了。本章就来学习一下如何在正点原子的STM32MP1开发板上…...

前端时间分片渲染

在经典的面试题中&#xff1a;”如果后端返回了十万条数据要你插入到页面中&#xff0c;你会怎么处理&#xff1f;” 除了像 useVirtualList 这样的虚拟列表来处理外&#xff0c;我们还可以通过 时间分片 来处理 通过 setTimeout 直接上一个例子&#xff1a; <!--* Autho…...

亿图导出word和PDF中清晰度保留方法

步骤一 在亿图软件中画一个元件大小搭配合理的图。注意字体大小的安排&#xff0c;尤其是角标的大小要合适&#xff0c;示范如下 选中所有元器件&#xff0c;右键使用组合功能将电路图组合为一个整体 步骤二&#xff1a; 将亿图软件中的图保存为SVG格式。示范如下 在导出到…...

chatGPT结构及商业级相似模型应用调研

GPT前言 说明 ChatGPT这项技术的历史可以追溯到2018年&#xff0c;当时由Facebook实验室的团队开发出该技术&#xff0c;以开发聊天机器人为目的。随后&#xff0c;ChatGPT在2019年由来自谷歌的DeepMind团队在国际会议ICLR上发表了论文&#xff0c;其中提出了ChatGPT的技术框架…...

百考通:AI精准精准赋能论文降重与去AI痕迹,让学术成果更高效、更专业

在学术写作与论文发表的过程中&#xff0c;重复率过高、AI生成痕迹明显&#xff0c;是困扰无数学生与科研工作者的核心难题。不仅可能导致查重不通过&#xff0c;更会影响学术诚信与成果认可度。百考通&#xff08;https://www.baikaotongai.com&#xff09; 凭借智能文本优化技…...

保姆级教程:用Proteus 8.13和STM32F103C8T6复现一个智能家居报警系统(附源码和仿真文件)

从零构建基于STM32的智能家居报警系统&#xff1a;Proteus仿真全流程指南 在嵌入式开发领域&#xff0c;仿真技术为初学者提供了低成本、高效率的学习途径。Proteus作为业界领先的电路仿真软件&#xff0c;与STM32系列微控制器的结合&#xff0c;能够帮助开发者快速验证设计思路…...

手把手教你调用MiniMax API:快速集成聊天、语音合成到你的应用(Python示例)

手把手教你调用MiniMax API&#xff1a;快速集成聊天、语音合成到你的应用&#xff08;Python示例&#xff09; 在AI技术快速落地的今天&#xff0c;将大模型能力集成到自己的应用中已成为开发者的刚需。MiniMax作为国内领先的大模型服务提供商&#xff0c;其API平台提供了对话…...

Druid监控页面登录失败?你可能踩了这个Request Body的坑

Druid监控登录异常排查&#xff1a;Request Body解析的隐蔽陷阱 最近在调试Druid监控面板时遇到一个诡异现象——明明配置了正确的用户名密码&#xff0c;却始终无法登录。控制台没有报错&#xff0c;前端参数也正常发送&#xff0c;但后端就是接收不到登录凭证。这种"看似…...

破局迷茫:Java 2026行业前瞻、零基础通关路径与理科大学生职业跃迁全攻略

你是否正站在人生的十字路口&#xff0c;被一连串的问题反复拷问&#xff1a;听过Java的大名&#xff0c;却始终搞不懂它到底是什么、能支撑你走多远&#xff1f;想入门编程&#xff0c;却面对海量资料无从下手&#xff0c;怕走弯路、怕投入时间最终竹篮打水&#xff1f;刷到无…...

Windows 11 LTSC系统快速安装微软商店:3分钟完成完整解决方案

Windows 11 LTSC系统快速安装微软商店&#xff1a;3分钟完成完整解决方案 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore Windows 11 LTSC版本以其卓越…...

UE5对象池系统深度解析:如何基于Subsystem框架设计可扩展的Gameplay工具

UE5对象池系统深度解析&#xff1a;如何基于Subsystem框架设计可扩展的Gameplay工具 在快节奏的现代游戏开发中&#xff0c;性能优化始终是开发者面临的核心挑战之一。想象一下这样的场景&#xff1a;当玩家在射击游戏中连续发射数百发子弹&#xff0c;或者在开放世界游戏中频繁…...

如何让你的第三方鼠标在macOS上重获新生?Mac Mouse Fix让普通鼠标体验提升300%

如何让你的第三方鼠标在macOS上重获新生&#xff1f;Mac Mouse Fix让普通鼠标体验提升300% 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是…...

如何解决JAVA无人共享无人健身房物联网结合系统防尾随问题

在JAVA无人共享无人健身房物联网结合系统中&#xff0c;防尾随问题可通过AB门防尾随方案结合物联网技术、AI算法和JAVA后端逻辑实现&#xff0c;其核心在于双门互锁机制AI人数检测实时通信控制。以下是具体解决方案&#xff1a;一、系统架构设计硬件层&#xff1a;双门结构&…...

避坑指南:树莓派读取NTC热敏电阻温度不准?可能是你的Steinhart-Hart公式用错了

树莓派温度监测精度提升实战&#xff1a;从Steinhart-Hart公式到系统级校准 当你在树莓派上搭建的温度监测系统显示当前室温为32C&#xff0c;而实际温度计读数却是28C时&#xff0c;这种偏差可能让人抓狂。这不是简单的测量误差&#xff0c;而是整个信号链中多个环节共同作用的…...