Redis4:Redis的Java客户端

欢迎来到“雪碧聊技术”CSDN博客!

在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。

让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!感谢您的关注与支持,期待在“雪碧聊技术”与您共同成长!

目录

一、Redis的Java客户端有哪些?

二、Jedis

1、Jedis快速入门

①新建一个maven类型的project

②引入依赖

③建立连接

④测试string

⑤ 释放资源

演示:

总结

2、Jedis连接池

三、SpringDataRedis

1、认识SpringDataRedis

①什么是SpringDataRedis?

②SpringDataRedis提供的RedisTemplate工具类

2、SpringDataRedis(RedisTemplate工具类)的快速入门

①新建一个SpringBoot项目(这一步不是关键)

②引入两个依赖

③配置文件

④注入RedisTemplate对象

⑤编写测试

⑥查看运行结果

3、StringRedisTemplate的使用

①为什么要是用StringRedisTemplate?

②解决方案:使用StringRedisTemplate,来代替RedisTemplate

③使用StringRedisTemplate向redis中,存入对象(JSON格式)

4、StringRedisTemplate操作Hash类型

结语


一、Redis的Java客户端有哪些?

其中Spring Data Redis兼容了Jedis和lettuce。

我们下面就会学习jedis和Spring Data Redis。

二、Jedis

1、Jedis快速入门

①新建一个maven类型的project

②引入依赖

③建立连接

④测试string

⑤ 释放资源

演示:

①引入jedis依赖

这里顺便引入以下junit单元测试的依赖,方便我们后面展示:

②写代码

public class JedisTest {private Jedis jedis;@BeforeEach  //在每个@Test方法前执行void setUp(){//1、建立连接jedis = new Jedis("192.168.6.100", 6379);//2、设置密码jedis.auth("123321");//3、选择库jedis.select(0);}@Testvoid testString(){//存入数据String result = jedis.set("name", "虎哥");System.out.println("result = "+result);//操作成功,则返回"OK"String name = jedis.get("name");System.out.println("name = "+name);}@Testvoid testHash(){//插入hash数据jedis.hset("user:1", "name", "Jack");jedis.hset("user:1", "age", "21");//获取数据Map<String, String> map = jedis.hgetAll("user:1");System.out.println(map);}@AfterEach  //在每个@Test方法后执行void tearDown(){if(jedis != null){jedis.close();}}
}

两个Test方法的执行结果如下:

总结

2、Jedis连接池

由于jedis本身是线程不安全的,并且频繁地创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式。

工具类编写:

举例:

①编写连接池工具类

新建一个utils包,创建下面的工具类

public class JedisConnectionFactory {private static final JedisPool jedisPool;static{//配置连接池JedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxTotal(8);//该连接池最多创建8个连接poolConfig.setMaxIdle(8);//该连接池最多有8个空闲连接poolConfig.setMinIdle(0);//该连接池最少有0个空闲连接poolConfig.setMaxWaitMillis(1000);//当连接池中,没有连接可用,最多等待1000毫秒(1秒)//创建连接池对象jedisPool = new JedisPool(poolConfig,"192.168.6.100", 6379, 1000, "123321");}public static Jedis getJedis(){return jedisPool.getResource();}
}

②使用连接池工具类,来获取连接

之前有的代码意义也变了:

③测试之前的代码

以上就是Jedis的全部内容。

三、SpringDataRedis

1、认识SpringDataRedis

①什么是SpringDataRedis?

②SpringDataRedis提供的RedisTemplate工具类

其中不同的API,会操作Redis不同类型的数据。

2、SpringDataRedis(RedisTemplate工具类)的快速入门

①新建一个SpringBoot项目(这一步不是关键)

②引入两个依赖

③配置文件

默认使用redis的0号库。如果你想选择其他库,请指定库:

注意:此处SpringDataRedis默认使用的是lettuce,如果你想用Jedis实现,就再需要手动导入一下Jedis的依赖。

④注入RedisTemplate对象

⑤编写测试

⑥查看运行结果

以上就是SpringDataRedis的简单使用。

3、StringRedisTemplate的使用

①为什么要是用StringRedisTemplate?

看看上面存的name-虎哥这个值,有没有问题:

为什么存入的键值对,会变成如此的样子?

答案:因为没有进行序列化,就导致原来的内容被剁碎了,于是看起来就好像乱码。

②解决方案:使用StringRedisTemplate,来代替RedisTemplate

③使用StringRedisTemplate向redis中,存入对象(JSON格式)

首先需要引入jackson依赖:

然后,新建一个ObjectMapper的对象:

最后,在业务中,对Redis进行存、取对象时,都要手动转为JSON字符串。

查看结果:

4、StringRedisTemplate操作Hash类型

运行结果:

以上就是RedisTemplate和StringRedisTemplate的全部内容。

结语

至此,Redis基础篇完成了。

下面要开始Redis实战篇了。

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

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

相关文章

基于Java Web的传智播客crm企业管理系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【Eclipse系列】eclipse安装与常规配置(含插件)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、下载与安装 二、常规设置 1.1.设置工作空间(workspace) 1.2.设置字体和字体大小 ​编辑 1.3.设置编码 1.4.去除验证(validation) 1.5.去除单词验证(spelli…

抗辐照MCU芯片工艺解析:如何保障芯片的可靠性

行星探索、轨道飞行器任务和空间研究在内的太空项目需要创新的航天器系统技术提供通信与处理功能。随着商业航天的发展&#xff0c;对于航天电子系统需要考虑高可靠与高性能的同时&#xff0c;还需要考虑降低开发成本和缩短上市时间。 以MCU芯片AS32A401为例&#xff0c;该芯片…

qt QKeySequence详解

1、概述 QKeySequence 是 Qt 框架中的一个类&#xff0c;用于表示和处理键盘快捷键序列。它提供了一种方便的方式来解析、存储和比较键盘快捷键&#xff0c;这些快捷键通常用于触发应用程序中的特定操作或命令。QKeySequence 支持多种格式的快捷键表示&#xff0c;包括单个按键…

【RMA】基于知识注入和模糊学习的多模态歧义分析

abstract 多模态情感分析&#xff08;MSA&#xff09;利用互补的多模态特征来预测情感极性&#xff0c;主要涉及语言、视觉和音频三种模态。现有的多模态融合方法主要考虑不同模态的互补性&#xff0c;而忽略了模态之间的冲突所导致的歧义&#xff08;即文本模态预测积极情绪&…

移动取证和 Android 安全

当今的数字时代已经产生了许多技术进步&#xff0c;无论是智能手机还是虚拟现实、人工智能和物联网 (IoT) 等下一代基础技术。 智能手机已不再只是奢侈品&#xff0c;而是我们生存所必需的东西。根据各种统计数据&#xff0c;如今全球有超过 50% 的人使用手机。 由于数据存储…

【Linux】简易版shell

文章目录 shell的基本框架PrintCommandLineGetCommandLineParseCommandLineExecuteCommandInitEnvCheckAndExecBuildCommand代码总览运行效果总结 shell的基本框架 要写一个命令行我们首先要写出基本框架。 打印命令行获取用户输入的命令分析命令执行命令 基本框架的代码&am…

Java 枚举

目录 枚举是什么 常用方法 构造方法 枚举的优缺点 枚举和反射 实现单例模式 枚举是什么 枚举&#xff08;enum&#xff09;&#xff1a;是一种特殊的类&#xff0c;用于定义一组常量&#xff0c;将其组织起来。枚举使得代码更具有可读性和可维护性&#xff0c;特别是在处…

【梯度下降法优化】随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam

本文理论参考王木头的视频&#xff1a; “随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam”&#xff0c;打包理解对梯度下降法的优化_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1r64y1s7fU/?spm_id_from333.999.0.0&vd_sourceecbdfcacb078d0…

五个高质量伤感视频素材资源站,帮你快速找到完美创作素材

在制作短视频、MV或者广告时&#xff0c;伤感主题的视频素材往往能触动观众的情感&#xff0c;让作品更具共鸣。无论是表达分手、离别&#xff0c;还是展现孤独与失落&#xff0c;合适的伤感素材对情感类创作至关重要。为帮助创作者找到优质的视频素材&#xff0c;以下推荐5个高…

天正建筑T20V8

链接: https://pan.baidu.com/s/1k-PcXJxHWPh3-6yAIfcaPg提取码: dvyn

JavaScript 实现文本转语音功能

全篇大概2000 字&#xff08;含代码&#xff09;&#xff0c;建议阅读时间10分钟。 引言 我将向大家展示如何使用 JavaScript 和 Web Speech API 快速实现一个“文本转语音”的 Web 应用。通过这个教程&#xff0c;你将了解如何让浏览器将输入的文本朗读出来。 预览效果 一、…

DNS域名详细解析详解

文章目录 DNS域名详细解析详解一、引言二、DNS域名解析过程1、DNS解析概述1.1、DNS解析的基本步骤 2、代码示例 三、DNS查询类型1、递归查询2、迭代查询 四、总结 DNS域名详细解析详解 一、引言 在互联网的世界里&#xff0c;域名和IP地址是两个不可或缺的概念。IP地址是计算…

函数计算——文档与网页数据提取工具(MinerU)应用实践

1 引言 在信息爆炸的时代&#xff0c;AI研究者面临着从海量文档中提取高质量数据的挑战。随着大语言模型在各个领域的广泛应用&#xff0c;有效地处理和整合文档信息成为了基础性的任务。这些文档形式多样&#xff0c;包括学术文献、行业报告、会议PPT、课本、说明书及合同单据…

【网络】应用层——HTTP协议

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是HTTP协议。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! > 专栏选自&#xff1a;网络 &g…

计算生物学与生物信息学漫谈-5-mapping算法

之前的文章我们介绍了参考基因组&#xff0c;也介绍了一些基本概念&#xff0c;具体可以看之前的博客&#xff1a; 计算生物学与生物信息学漫谈-4-参考基因组与Mapping准备_基因组的map-CSDN博客 这次我们讲如何将read map到基因组上所用到的各种算法&#xff1a; 目录 1.1 …

qsqlmysql.lib的编译和使用

文章目录 打开源码 打开源码 打开qt源码安装路径 src相对路径下的文件Src\qtbase\src\plugins\sqldrivers\mysql 比如我是5.9.9版本我的路径就是&#xff1a;D:\Qt5.9.9\5.9.9\Src\qtbase\src\plugins\sqldrivers\mysql 可以看到待编译的mysql驱动文件 使用IDE打开pro文件进…

leetcode 693.交替位二进制数

1.题目要求&#xff1a; 2.题目代码: class Solution { public:bool hasAlternatingBits(int n) {int num n;//设置数组存入二进制位vector<int> array;while(num){array.push_back(num % 2); num num / 2;}//把数组颠倒就能得到此数真正二进制位reverse(array.begin…

IP协议知识点总结

IP协议主要分为三个 1. 地址管理 每个网络上的设备, 要能分配一个唯一的地址 2. 路由选择 小A 给小B 发消息, 具体应该走什么路线 3. 地址管理 IP 地址. 本质上是一个 32 位的整数 通常将, 32 位的整数使用点分十进制来表示, 如 192.168.1.1 一共可以表示 42 亿 9 千万个地址…

【重学 MySQL】八十二、深入探索 CASE 语句的应用

【重学 MySQL】八十二、深入探索 CASE 语句的应用 CASE语句的两种形式CASE语句的应用场景数据分类动态排序条件计算在 SELECT 子句中使用在 WHERE子句中使用在 ORDER BY 子句中使用 注意事项 在MySQL中&#xff0c;CASE 语句提供了一种强大的方式来实现条件分支逻辑&#xff0c…