文章目录

  • 1 场景
    • 1.1 版本说明
    • 1.2 代码地址
    • 1.3 项目结构
  • 2 整合步骤
    • 2.1 配置maven依赖
    • 2.2 配置redis配置文件
    • 2.3 引入redis配置文件
    • 2.4 spring中配置redis
  • 3 使用
  • 4 扩展

1 场景

spring中使用jedis整合单节点redis。

redis官网: https://redis.io/

spring集成redis官网: https://spring.io/projects/spring-data-redis

1.1 版本说明

jdk版本: 1.8

spring版本:5.2.2.RELEASE

spring-data-redis版本: 2.3.2.RELEASE

jedis版本: 3.3.0

redis版本:5.0.8

连接redis组件: jedis

redis部署方式: 单节点

1.2 代码地址

https://github.com/yjhcpdd/mymvc

1.3 项目结构

--java
--resources--conf-mybatis-redis.xml**[1]-spring.xml*********[2]--properties-redis.properties***[3]

2 整合步骤

2.1 配置maven依赖

pom.xml中配置相关依赖包(完整配置,可参见源码):

<dependencies>...<!-- ==========【redis】========== --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>2.3.2.RELEASE</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.8.1</version></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.3.0</version></dependency>
</dependencies>

2.2 配置redis配置文件

创建数据库配置文件redis.properties[3],增加如下配置:

#redis数据库连接配置
redis.hostName=192.168.1.11
redis.port=6379
redis.password=123456
redis.database=0

2.3 引入redis配置文件

spring配置文件中引入redis配置文件

<context:property-placeholder location="classpath:properties/redis.properties" />

2.4 spring中配置redis

更改jedis的spring配置文件mybatis-redis.xml[1]

<!-- 密码配置 -->
<bean id="redisPassword" class="org.springframework.data.redis.connection.RedisPassword" factory-method="of"><constructor-arg name="passwordAsString" value="${redis.password}" />
</bean><!-- 连接配置 -->
<bean id="redisStandaloneConfiguration"class="org.springframework.data.redis.connection.RedisStandaloneConfiguration"><property name="hostName" value="${redis.hostName}"/><property name="port" value="${redis.port}"/><property name="password" ref="redisPassword"/><property name="database" value="${redis.database}"/>
</bean><!-- 连接池配置(根据需要配置连接池优化参数) -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"><!-- 优化参数 -->
</bean><!-- 客户端连接配置 -->
<bean id="jedisClientConfiguration"class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory$MutableJedisClientConfiguration"factory-method="create"><constructor-arg name="jedisPoolConfig" ref="jedisPoolConfig"/>
</bean><!-- 连接工厂 -->
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"><!-- "单机"连接配置 --><constructor-arg name="standaloneConfig" ref="redisStandaloneConfiguration"/><!-- 客户端连接配置 --><constructor-arg name="clientConfig" ref="jedisClientConfiguration"/>
</bean><!-- 字符串句柄 -->
<bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"><constructor-arg name="connectionFactory" ref="jedisConnectionFactory"/>
</bean>

这里配置了redis常用的操作句柄stringRedisTemplate,如需要其他句柄实现,可以自己集成泛型类org.springframework.data.redis.core.RedisTemplate,自定义自己的泛型实现。

3 使用

spring中使用redis,只需要将redis的句柄stringRedisTemplate注入到spring环境中即可。

@Autowired
private StringRedisTemplate stringRedisTemplate;

句柄使用时,可调用对应的opsForXXX来操作不同类型的数据,如下:

//字符串句柄写法
stringRedisTemplate.opsForValue().set("k1", "v1");
stringRedisTemplate.opsForValue().get("k1");

在使用此句柄时,不需要自己手动关闭连接,查看源码,可以看到RedisTemplate.java中已经自动执行了连接的回收操作:

@Nullable
<T> T execute(RedisCallback<T> callback, boolean exposeConnection) {return template.execute(callback, exposeConnection);
}public <T> T execute(RedisCallback<T> action, boolean exposeConnection, boolean pipeline) {//校验RedisConnectionFactory factory = getRequiredConnectionFactory();RedisConnection conn = null;try {//真正的数据库操作action} finally {RedisConnectionUtils.releaseConnection(conn, factory, enableTransactionSupport);}
}

4 扩展

如默认jedis默认提供的操作句柄stringRedisTemplate中提供的方法不能满足自己需求,又不想自定义泛型扩展类RedisTemplate。可以通过stringRedisTemplate获取原始的redisTemplate,手动编写回调方法execute,来实现需要的功能:

//调用原生jedis回调写法
stringRedisTemplate.execute((RedisCallback<Object>) connection -> {connection.flushAll();return null;
});

此种方式,可以通过更改匿名类中的泛型类型,来设置回调方法返回的数据类型,从而返回相应的执行结果。

spring整合jedis(单节点)相关推荐

  1. springBoot整合redis单节点、redis哨兵、redis集群配置及redisClient区别

    springBoot整合redis单节点.redis哨兵.redis集群配置,redisClient jedis lettuce 区别? 1.springboot 整合redis单机模式: sprin ...

  2. Spring模板对象之RedisTemplate(Spring整合jedis)

    Spring模板对象之RedisTemplate 构建maven项目 pom <?xml version="1.0" encoding="UTF-8"?& ...

  3. Redis工作笔记-spring整合jedis

    目录 概念 代码与实例 概念 这里,一般都是用jedis去搞项目,而不是用spring自带的. 主要是xml: <?xml version="1.0" encoding=&q ...

  4. springboot和quartz整合实现动态定时任务(持久化单节点)

    Quartz是一个完全由java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制,它支持定时任务持久化到数据库,从而避免了重启服务器时任务丢失,支持分布式多节点,大大的 ...

  5. 【Structs2】struts2单例多例以及spring整合的问题

    单独的Struts2框架 1.struts2的Action默认是多实例的并非单例,也就是每次请求产生一个Action的对象,即每次访问的参数都被封装在Action的成员变量中. 2.struts2中A ...

  6. redis -Spring与Jedis集群 Sentinel

    2019独角兽企业重金招聘Python工程师标准>>> redis -Spring与Jedis集群 Sentinel 博客分类: 缓存 首先不得不服Spring这个宇宙无敌的开源框架 ...

  7. 【编程不良人】快速入门Spring学习笔记08---事务属性、Spring整合Structs2框架(SM)、Spring整合Mybatis+Struts2(SSM)、Spring注解、SSM注解式开发

    1. 事务属性 1.1 事务传播属性 配套视频:[编程不良人]快速入门Spring,SpringBoot.SpringCloud学不好完全是因为Spring没有掌握!_哔哩哔哩_bilibili # ...

  8. Spring整合CXF,发布RSETful 风格WebService

    这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的.关于发布CXF WebServer和Spring整合CXF这里就不再多加赘述了.如果你对Spring整合CXF ...

  9. springMvc+mybatis+spring 整合 包涵整合activiti 基于maven

    2019独角兽企业重金招聘Python工程师标准>>> 最近自己独立弄一个activiti项目,写一下整合过程: 环境:jdk1.7 tomcat7.0 maven3.5  ecli ...

最新文章

  1. 《AutoCAD 2016中文版室内装潢设计从入门到精通》——第2章 AutoCAD 2016入门2.1 操作界面...
  2. 快速查看linux命令的用法----------TLDR
  3. HTTP Error 503. The service is unavailable.
  4. 温州人集体大溃败,值得所有中国人警示!
  5. 金蝶业务+sqlserver子查询
  6. java 泛型 类型形参(Type Parameters) 类型
  7. python 拆分字符串反斜杠_每日一课 | Python 拆分字符串入到字典里面
  8. Python Web项目自定义虚拟环境
  9. 升级VS2019后调试出现“表达式计算器中发生内部错误”
  10. DNF调整建议与新团本策划
  11. 谷歌地图的标记样式_如何为Google地图设置样式
  12. 电脑自带的edge浏览器无法访问解决问题
  13. Get the information of all heroes in the League of Legends through the crawler.
  14. uiautomatorviewer 简单使用
  15. 必须来GeekPwn的十大理由
  16. 若依框架(Ruoyi-vue)上传视频且回显
  17. 2021.11.8-11.14 AI行业周刊(第71期):AI行业经验
  18. 基于WiFi的网络授时时钟(带实时天气更新)设计——DIY方案分享
  19. 利用Freemarker模板引擎发送邮件
  20. 智慧工地管理系统在建筑工程中的应用策略

热门文章

  1. 虚拟机控制数据结构 (VMCS)状态转换
  2. 51单片机18B20测温1602LCD显示
  3. mybatis--一对一、一对多、多对多(七)
  4. Java设计模式之代理(动态代理,静态代理)
  5. 帝豪gl车机系统降级_帝豪GL配备智能娱乐系统,搭1.8L发动机,静态体验如何?...
  6. 常用的开源镜像网站收集与备忘
  7. 16岁学计算机,16岁学生能学计算机吗
  8. 在PostgreSQL中解码Django会话
  9. 动态构建LINQ表达式
  10. 客户端Blazor中的应用程序设置