Redis入门很简单之五【Jedis和Spring的整合】

SpringBoot基本操作(五)——SpringBoot使用Jedis整合Redis(有demo) SpringBoot2.0笔记 (一)SpringBoot基本操作——环境搭建及项目创建(有demo) (二)SpringBoot基本操作——使用IDEA打war包发布及测试 (三)SpringBoot基本操作——SpringBoot整合SpringDataJpa(有demo) (四)SpringBoot基本操作——SpringBoot使用RedisTemplate整合Redis(有dem... 阅读详情
在上一篇文章中,简单介绍了Jedis的连接池使用方式。

如果和Spring进行整合的话,我们将获得更好的简洁性、灵活性,显然是一种更加优雅(graceful)的方式。

 

[一]. 搭建环境:
 1. 在之前版本的基础之上,添加如下的依赖:
   spring.jar
   commons-logging.jar
   log4j-1.2.15.jar
   同时添加日志配置文件:log4j.properties到classpath下面。
 2. 配置Spring文件:applicationContext.xml
  注意:连接池jedisPool的配置,这里使用了构造方式注入,这是和Jedis的API一致的;
   在注入port时,需要使用使用type = "int"指定注入的参数类型,否则出现异常。

Xml代码  收藏代码
  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.       xmlns:context="http://www.springframework.org/schema/context"  
  3.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  5.              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">  
  6.     
  7.       <!-- 加载redis配置文件 -->  
  8.       <context:property-placeholder location="classpath:redis.properties"/>  
  9.         
  10.       <!-- redis连接池的配置 -->  
  11.       <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">  
  12.           <property name="maxActive" value="${redis.pool.maxActive}"/>  
  13.           <property name="maxIdle" value="${redis.pool.maxIdle}"/>  
  14.           <property name="minIdle" value="${redis.pool.minIdle}"/>  
  15.           <property name="maxWait" value="${redis.pool.maxWait}"/>  
  16.           <property name="testOnBorrow" value="${redis.pool.testOnBorrow}"/>  
  17.           <property name="testOnReturn" value="${redis.pool.testOnReturn}"/>  
  18.       </bean>  
  19.         
  20.       <!-- redis的连接池pool,不是必选项:timeout/password  -->  
  21.       <bean id = "jedisPool" class="redis.clients.jedis.JedisPool">  
  22.           <constructor-arg index="0" ref="jedisPoolConfig"/>  
  23.           <constructor-arg index="1" value="${redis.host}"/>  
  24.           <constructor-arg index="2" value="${redis.port}" type="int"/>  
  25.           <constructor-arg index="3" value="${redis.timeout}" type="int"/>  
  26.           <constructor-arg index="4" value="${redis.password}"/>  
  27.       </bean>  
  28.         
  29.   </beans>  

 

[二]. 从SPring容器中获取JedisPool:

Java代码  收藏代码
  1. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  
  2. JedisPool pool = (JedisPool) context.getBean("jedisPool");  
  3. Jedis jedis = pool.getResource();  
  4.  ...  
  5. pool.returnResource(jedis);  

 

[三]. 缓存JavaBean:
 上一篇文章中,已经有了对Jedis使用的基本说明。 

  当然很多时候我们都希望Redis能够对JavaBean进行缓存,这需要借助于JDK提供的序列化技术。
   1. 要求缓存实体实现了序列化Serializable接口:这里以Userinfo为例。
   2. 序列化工具类:Jedis对序列化的支持,是提供了字节数组byte[]作为参数;
  为此编写SerializingUtil工具类负责byte[]和JavaBean之间的相互转换。该方法的API如下所示:

Java代码  收藏代码
  1. public static byte[] serialize(Object source);   
  2. public static Object deserialize(byte[] source);  

   该工具类的具体实现:

Java代码  收藏代码
  1. /** 
  2.  * 功能简述: 序列化工具类,负责byte[]和Object之间的相互转换. 
  3.  * @author Nick Xu 
  4.  * @version 1.0 
  5.  */  
  6. public class SerializingUtil {  
  7.       
  8.     private static Log logger = LogFactory.getLog(SerializingUtil.class);  
  9.       
  10.     /** 
  11.      * 功能简述: 对实体Bean进行序列化操作. 
  12.      * @param source 待转换的实体 
  13.      * @return 转换之后的字节数组 
  14.      * @throws Exception 
  15.      */  
  16.     public static byte[] serialize(Object source) {  
  17.         ByteArrayOutputStream byteOut = null;  
  18.         ObjectOutputStream ObjOut = null;  
  19.         try {  
  20.             byteOut = new ByteArrayOutputStream();  
  21.             ObjOut = new ObjectOutputStream(byteOut);  
  22.             ObjOut.writeObject(source);  
  23.             ObjOut.flush();  
  24.         }  
  25.         catch (IOException e) {  
  26.             logger.error(source.getClass().getName()  
  27.                 + " serialized error !", e);  
  28.         }  
  29.         finally {  
  30.             try {  
  31.                 if (null != ObjOut) {  
  32.                     ObjOut.close();  
  33.                 }  
  34.             }  
  35.             catch (IOException e) {  
  36.                 ObjOut = null;  
  37.             }  
  38.         }  
  39.         return byteOut.toByteArray();  
  40.     }  
  41.       
  42.     /** 
  43.      * 功能简述: 将字节数组反序列化为实体Bean. 
  44.      * @param source 需要进行反序列化的字节数组 
  45.      * @return 反序列化后的实体Bean 
  46.      * @throws Exception 
  47.      */  
  48.     public static Object deserialize(byte[] source) {  
  49.         ObjectInputStream ObjIn = null;  
  50.         Object retVal = null;  
  51.         try {  
  52.             ByteArrayInputStream byteIn = new ByteArrayInputStream(source);  
  53.             ObjIn = new ObjectInputStream(byteIn);  
  54.             retVal = ObjIn.readObject();  
  55.         }  
  56.         catch (Exception e) {  
  57.             logger.error("deserialized error  !", e);  
  58.         }  
  59.         finally {  
  60.             try {  
  61.                 if(null != ObjIn) {  
  62.                     ObjIn.close();  
  63.                 }  
  64.             }  
  65.             catch (IOException e) {  
  66.                 ObjIn = null;  
  67.             }  
  68.         }  
  69.         return retVal;  
  70.     }  
  71. }  

 3. 对JavaBean的存储和获取:
        定义实体:借助于Timestamp类,获取ms值。

Java代码  收藏代码
  1. Userinfo actual = new Userinfo(140520, "Nick Xu",   
  2. new Date(Timestamp.valueOf("1990-11-11 00:00:00").getTime()));  

      使用Jedis操作:key、value都需要转成byte[]字节数组。

Java代码  收藏代码
  1. String key = "user.userid." + actual.getUserId();  
  2. jedis.set(key.getBytes(), SerializingUtil.serialize(actual));  
  3. Userinfo expected = (Userinfo) SerializingUtil.deserialize(jedis.get(key.getBytes()));  

        对象的比较:需要覆写equals和hashCode方法。   

Java代码  收藏代码
  1. assertEquals(expected, actual);  
Spring Boot整合Redis 文章目录前言Maven 依赖Jedis配置封装Properties Redis配置配置Jedis封装操作Jedis接口对应实现单元测试 前言 spring boot提供了spring-data-redis库来整合 Redis的操作,并通过简单的配置信息实现与Redis的整合。 PS:个人还是习惯于使用 Jedis 面向 Java 客户端操作 Redis 废话不多说,上代码。 ???? Maven 依赖 ... 阅读详情

相关推荐

springboot整合Redis中连接池jedis与lettuce的对比和实现

springboot整合Redis中连接池jedis与lettuce的对比和实现

todoitbo的博客 2万+

Spring整合Jedis

Spring直接整合Jedis 第1步,引入Jedis的依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> ...

weixin_44096325的博客 709

Spring框架与Redis整合使用Jedis实战案例

Jedis是一个简单易用的Java Redis客户端,广泛应用于Java项目中与Redis数据库进行交云。Jedis提供了丰富的Redis命令接口,使得开发者能够轻松地在Java程序中实现对Redis的各类操作。它的优势主要体现在以下几个方面:轻量级:Jedis作为客户端库,其API设计简洁,能够轻松集成至项目中。全面性:几乎所有Redis支持的命令都能通过Jedis库得到支持,丰富的接口覆盖了从基本数据操作到高级特性。社区支持。

weixin_42452924的博客 1113

springboot使用jedis

spring-boot-starter-data-redis有两种实现:lettuce 和 jedis 。然而默认是使用lettuce,jedis 和 lettuce 都是redis官方推荐的客户端,我选择了jedis,主要有以下考虑:, 需要注意的是springboot的版本和jedis的版本是有关联的:springboot 2.2.x 要求jedis版本为3.1.0请先阅读引用中的文章。 2.2 redis value配置序列化方法 GenericFastJsonRedisSerializer.....

日渐机智的博客 8096

压电阀控制器设计-总章

本文章用于回顾记录本人制作压电阀控制器的关键技术,本人所制作压电阀控制器已经上市得到应用,特在此对一些关键技术进行回顾记录,欢迎从事压电控制及压电阀相关人员一起讨论

qq_42712859的博客 850

双硬盘下Ubuntu 16.04与Win10双系统的安装

之前写过一个双系统安装过程,今天再次整理的原因是想重点强调双硬盘的区别。标红的一定要注意看,那就是我自己一步一步踏出来的坑啊...   基础步骤就不再重复,重点讲区别,需要看详细步骤的童鞋(或者你只有一个硬盘)请看我上一篇博客https://blog.youkuaiyun.com/weixin_40308540/article/details/80157444   区别:双硬盘和单硬盘的区别是什么呢?...

不吃包子 1126

redis连接池配置

该值 且 空闲连接>最大空闲连接数 时直接释放 --> destroy-method="close">

lianbancai的博客 3128

C++开发基础之掌握常用的三种异步编程模型

以上是三种常见的C++异步编程模型,每种模型都有其适用的场景和特点。根据具体需求,你可以选择合适的模型来进行异步编程。

dotnet研习社 2177

nested exception is java.lang.NoClassDefFoundError: com/taotao/pojo/TbContentExample$Criteria] with

java.lang.NoSuchMethodError

真正的大师永远怀着一颗学徒的心 1329

人工智能之数学基础:弄懂数学本质,让我们不再害怕数学

数学的用途远远超过了人们的想象,甚至无处不在,任何领域都需要用到数学知识,人工智能也不例外。我将尽可能地将数学知识和机器学习算法相结合,让大家知道这些数学知识咋人工智能领域中的应用,使得数学的学习不会过于枯燥,同时也帮助大家扫清在学习算法过程中的数学障碍。除此之外,我还希望帮助大家建立一种不一样的数学思维,不再将数学看成是符号的演算、公式的推导,而是将数学看成是一种描述这个世界的工具,这样你就会发现这个世界处处有数学。当我们面对问题的时候,你是否会对问题进行抽象,然后通过数学来解决问题?

huanfeng_AI的博客 634

dji psdk开发 关于SDK认证芯片的使用

Payload SDK V3.10.0 于 2025-1-8 发布,增加了 Matrice 4T/4E 机型支持,同时也增加了 DJI SDK 认证芯片(DJI SDK CC)功能支持。关于认证芯片的介绍大疆 SDK 认证芯片(DJI SDK Certified Chip),简称 DJI SDK CC,用于认证基于 DJI Eport/Eport-Lite 接口开发的第三方负载设备,确保设备能够正常工作并与无人机可以进行有效通信,起到负载安全认证和功能授权的作用。

热爱生活,忠于自己 2152

Springboot整合Jedis

我们在用Springboot整合Redis。

heyu996的博客 2897

【思博伦】史上最详细Spirent TestCenter测试仪使用教程精讲(一)!图解超赞超详细!!!

3. 在弹出的界面中,找到菜单栏中的“Connect/Create”,选择下拉框中的“Connect to Physical/Visual Chassis”,在弹出的对话框中输入思博伦测试仪的IP地址:192.168.6.244,点击“OK”;说明:目前我们只需要使用到Raw Stream Block,不需要用到Bound Stream Block。说明:如果要使用100G模式,由于硬件限制,必须连续3个面板端口同时配置为100G使用。打开安装包,并按照提示按照即可。

风云说通信 6481

Spring整合Redis

本文将简要介绍如何在Spring中集成Jedis,配置连接池、数据序列化等内容,并通过封装工具类来优化Redis的使用体验。

懒惰蜗牛的博客 2759

基于Transformer模型实现交通流量时序预测(PyTorch版)

Transformer模型,作为一种基于自注意力机制的深度学习模型,最初在自然语言处理领域取得了突破性进展,其出色的长距离依赖关系捕捉能力使其在处理时序数据时也表现出色。将Transformer模型应用于交通流量时序预测,可以充分利用其优势,实现对交通流量更加精准、高效的预测。

时序笔记 2574

AI安全护栏评测:TrustedExecBench如何量化评估大模型防护能力

在人工智能和机器学习领域,模型安全对齐是确保AI系统可靠、可控的核心技术。其原理是通过设计安全机制(即“护栏”)来约束模型行为,防止生成有害、偏见或越界内容。这项技术的核心价值在于平衡AI能力与风险管控,是可信AI部署的基石。应用场景广泛覆盖内容审核、对话系统、代码生成等需要人机交互的领域。本文聚焦的TrustedExecBench项目,正是针对“护栏”性能量化评估这一痛点,提供了一个标准化、自动化的开源评测框架。该工具通过构建多维度的恶意测试套件,并引入基于模型的动态评判机制,能够系统性地检验大语言模型在

weixin_42525428的博客 379

Redis工作笔记-spring整合jedis

目录 概念 代码与实例 概念 这里,一般都是用jedis去搞项目,而不是用spring自带的。 主要是xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="htt...

IT1995的博客 4768

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Redis(Jedis和SpringBoot整合Redis)

/

Sun的个人博客 2461

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Spring整合Jedis使用Redis

Redis中只能提供基于字符串类型的操作,而在java中主要以类对象为主,所以redis需要redis存储的字符串和java对象相互转化,自己编写这些规则,工作量比较大,但是spring对这些进行了封装和支持,他提供了序列化的设计框架和一些序列化的类,使Redis能把他存储起来,在读取的时候,再把序列化的字符串转化为java对象,这样使用起来会非常方便与简单,所以更多的时候使用Sp...

骚小孩啊丶 4520

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

springBoot整合Redis(一、Jedis操作Redis)

在springboot环境下连接redis的方法有很多,首先最简单的就是直接通过jedis类来连接,jedis类就相当于是redis的客户端表示。但是因为现在比较常用的是:StringRedisTemplate和RedisTemplate,所以jedis只做简单的介绍。

kkkkatoq的博客 4358

不要再找了,Java操作Redis、Spring整合Redis及SpringBoot整合Redis这里都有

redis   

爱读史的小马的博客 1887
上一篇: Redis入门很简单之四【初识Jedis】
下一篇: Redis入门很简单之六【Jedis常见操作】
codepython
博客等级 码龄20年 125粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值