spring整合jedis(单节点)
文章目录
- 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(单节点)相关推荐
- springBoot整合redis单节点、redis哨兵、redis集群配置及redisClient区别
springBoot整合redis单节点.redis哨兵.redis集群配置,redisClient jedis lettuce 区别? 1.springboot 整合redis单机模式: sprin ...
- Spring模板对象之RedisTemplate(Spring整合jedis)
Spring模板对象之RedisTemplate 构建maven项目 pom <?xml version="1.0" encoding="UTF-8"?& ...
- Redis工作笔记-spring整合jedis
目录 概念 代码与实例 概念 这里,一般都是用jedis去搞项目,而不是用spring自带的. 主要是xml: <?xml version="1.0" encoding=&q ...
- springboot和quartz整合实现动态定时任务(持久化单节点)
Quartz是一个完全由java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制,它支持定时任务持久化到数据库,从而避免了重启服务器时任务丢失,支持分布式多节点,大大的 ...
- 【Structs2】struts2单例多例以及spring整合的问题
单独的Struts2框架 1.struts2的Action默认是多实例的并非单例,也就是每次请求产生一个Action的对象,即每次访问的参数都被封装在Action的成员变量中. 2.struts2中A ...
- redis -Spring与Jedis集群 Sentinel
2019独角兽企业重金招聘Python工程师标准>>> redis -Spring与Jedis集群 Sentinel 博客分类: 缓存 首先不得不服Spring这个宇宙无敌的开源框架 ...
- 【编程不良人】快速入门Spring学习笔记08---事务属性、Spring整合Structs2框架(SM)、Spring整合Mybatis+Struts2(SSM)、Spring注解、SSM注解式开发
1. 事务属性 1.1 事务传播属性 配套视频:[编程不良人]快速入门Spring,SpringBoot.SpringCloud学不好完全是因为Spring没有掌握!_哔哩哔哩_bilibili # ...
- Spring整合CXF,发布RSETful 风格WebService
这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的.关于发布CXF WebServer和Spring整合CXF这里就不再多加赘述了.如果你对Spring整合CXF ...
- springMvc+mybatis+spring 整合 包涵整合activiti 基于maven
2019独角兽企业重金招聘Python工程师标准>>> 最近自己独立弄一个activiti项目,写一下整合过程: 环境:jdk1.7 tomcat7.0 maven3.5 ecli ...
最新文章
- 《AutoCAD 2016中文版室内装潢设计从入门到精通》——第2章 AutoCAD 2016入门2.1 操作界面...
- 快速查看linux命令的用法----------TLDR
- HTTP Error 503. The service is unavailable.
- 温州人集体大溃败,值得所有中国人警示!
- 金蝶业务+sqlserver子查询
- java 泛型 类型形参(Type Parameters) 类型
- python 拆分字符串反斜杠_每日一课 | Python 拆分字符串入到字典里面
- Python Web项目自定义虚拟环境
- 升级VS2019后调试出现“表达式计算器中发生内部错误”
- DNF调整建议与新团本策划
- 谷歌地图的标记样式_如何为Google地图设置样式
- 电脑自带的edge浏览器无法访问解决问题
- Get the information of all heroes in the League of Legends through the crawler.
- uiautomatorviewer 简单使用
- 必须来GeekPwn的十大理由
- 若依框架(Ruoyi-vue)上传视频且回显
- 2021.11.8-11.14 AI行业周刊(第71期):AI行业经验
- 基于WiFi的网络授时时钟(带实时天气更新)设计——DIY方案分享
- 利用Freemarker模板引擎发送邮件
- 智慧工地管理系统在建筑工程中的应用策略