redisson整合spring
转:
redisson整合spring
转:
原文:http://blog.csdn.net/wang_keng/article/details/73549274
首先讲下什么是Redisson:Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。(摘自redisson的wiki:wiki地址)
redisson提供的api均以面向对象的操作方式,将key-value封装成我们熟悉的集合或者对象,我们可以通过封装的api更方便的操作数据。同时它提供了多个实现了java.util.corrurnent接口的集合类,让我们能在线程安全的环境下操作数据。
其中redis的官网也将它纳入推荐使用的工具中,可见redisson已经逐渐上位。
废话不多说,现在开始讲下怎么整合redisson到spring:
首先引入redisson的包:(如果你还在用手动加jar包的方式,那建议你赶紧学一下maven,用上后会让你有种便秘一星期后突然通便的清爽)
- <dependency>
- <groupId>org.redisson</groupId>
- <artifactId>redisson</artifactId>
- <version>2.8.2</version>
- </dependency> </span>
接下来新建redisson.xml文件:(可参考wiki:redisson配置教程)
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:redisson="http://redisson.org/schema/redisson"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://redisson.org/schema/redisson
- http://redisson.org/schema/redisson/redisson.xsd">
- <!--
- 单台redis机器配置
- <redisson:client id="redissonClient">
- <redisson:single-server address="192.168.2.100:7000" connection-pool-size="30"/>
- </redisson:client>
- -->
- <!-- redis集群配置 -->
- <redisson:client id="redissonClient" >
- <redisson:cluster-servers scan-interval="10000"> <!-- //scan-interval:集群状态扫描间隔时间,单位是毫秒 -->
- <redisson:node-address value="192.168.2.100:7000"></redisson:node-address>
- <redisson:node-address value="192.168.2.100:7001"></redisson:node-address>
- <redisson:node-address value="192.168.2.100:7002"></redisson:node-address>
- <redisson:node-address value="192.168.2.100:7003"></redisson:node-address>
- <redisson:node-address value="192.168.2.100:7004"></redisson:node-address>
- <redisson:node-address value="192.168.2.100:7005"></redisson:node-address>
- </redisson:cluster-servers>
- </redisson:client>
- </beans>
然后在Application.xml中引入redisson.xml:<import resource="classpath:/spring/redisson.xml" /> (路径记得自己改哦~)
至此我们redisson的环境就配置好了。接下来就是怎么操作它来操作redis:
首先新建一个工具类RedissonUtils:
package com.basic.common.utils.redis;
- import java.util.Map;
- import org.redisson.api.RAtomicLong;
- import org.redisson.api.RBucket;
- import org.redisson.api.RCountDownLatch;
- import org.redisson.api.RDeque;
- import org.redisson.api.RList;
- import org.redisson.api.RLock;
- import org.redisson.api.RMap;
- import org.redisson.api.RQueue;
- import org.redisson.api.RSet;
- import org.redisson.api.RSortedSet;
- import org.redisson.api.RTopic;
- import org.redisson.api.RedissonClient;
- import org.springframework.stereotype.Service;
- import com.basic.common.utils.generator.CollectionObjectConvert;
- @Service
- public class RedissonUtils{
- /**
- * 获取字符串对象
- * @param redisson
- * @param t
- * @param objectName
- * @return
- */
- public static <T> RBucket<T> getRBucket(RedissonClient redissonClient,String objectName){
- RBucket<T> bucket=redissonClient.getBucket(objectName);
- return bucket;
- }
- /**
- * 获取Map对象
- * @param redisson
- * @param objectName
- * @return
- */
- public static <K,V> RMap<K, V> getRMap(RedissonClient redissonClient,String objectName){
- RMap<K, V> map=redissonClient.getMap(objectName);
- return map;
- }
- /**
- * 获取有序集合
- * @param redisson
- * @param objectName
- * @return
- */
- public static <V> RSortedSet<V> getRSortedSet(RedissonClient redissonClient,String objectName){
- RSortedSet<V> sortedSet=redissonClient.getSortedSet(objectName);
- return sortedSet;
- }
- /**
- * 获取集合
- * @param redisson
- * @param objectName
- * @return
- */
- public static <V> RSet<V> getRSet(RedissonClient redissonClient,String objectName){
- RSet<V> rSet=redissonClient.getSet(objectName);
- return rSet;
- }
- /**
- * 获取列表
- * @param redisson
- * @param objectName
- * @return
- */
- public static <V> RList<V> getRList(RedissonClient redissonClient,String objectName){
- RList<V> rList=redissonClient.getList(objectName);
- return rList;
- }
- /**
- * 获取队列
- * @param redisson
- * @param objectName
- * @return
- */
- public static <V> RQueue<V> getRQueue(RedissonClient redissonClient,String objectName){
- RQueue<V> rQueue=redissonClient.getQueue(objectName);
- return rQueue;
- }
- /**
- * 获取双端队列
- * @param redisson
- * @param objectName
- * @return
- */
- public static <V> RDeque<V> getRDeque(RedissonClient redissonClient,String objectName){
- RDeque<V> rDeque=redissonClient.getDeque(objectName);
- return rDeque;
- }
- /**
- * 此方法不可用在Redisson 1.2 中
- * 在1.2.2版本中 可用
- * @param redisson
- * @param objectName
- * @return
- */
- /**
- public <V> RBlockingQueue<V> getRBlockingQueue(Redisson redisson,String objectName){
- RBlockingQueue rb=redisson.getBlockingQueue(objectName);
- return rb;
- }*/
- /**
- * 获取锁
- * @param redisson
- * @param objectName
- * @return
- */
- public static RLock getRLock(RedissonClient redissonClient,String objectName){
- RLock rLock=redissonClient.getLock(objectName);
- return rLock;
- }
- /**
- * 获取原子数
- * @param redisson
- * @param objectName
- * @return
- */
- public static RAtomicLong getRAtomicLong(RedissonClient redissonClient,String objectName){
- RAtomicLong rAtomicLong=redissonClient.getAtomicLong(objectName);
- return rAtomicLong;
- }
- /**
- * 获取记数锁
- * @param redisson
- * @param objectName
- * @return
- */
- public static RCountDownLatch getRCountDownLatch(RedissonClient redissonClient,String objectName){
- RCountDownLatch rCountDownLatch=redissonClient.getCountDownLatch(objectName);
- return rCountDownLatch;
- }
- /**
- * 获取消息的Topic
- * @param redisson
- * @param objectName
- * @return
- */
- public static <M> RTopic<M> getRTopic(RedissonClient redissonClient,String objectName){
- RTopic<M> rTopic=redissonClient.getTopic(objectName);
- return rTopic;
- }
- }
然后我们需要在调用RedissonUtils的类中依赖进RedissonClient
@Autowired
private RedissonClient redisson;
只后便可以对redis进行操作啦
RMap<String, Object> map = RedissonUtils.getRMap(redisson,key);
map.put("key","value"); 调用到这个语句的同时就已经对redis中的数据进行了修改。
注意!redis最好是3.0以上的,官方发布的版本,不然会出现莫名其妙的错误
redisson整合spring的更多相关文章
- 【Java EE 学习 81】【CXF框架】【CXF整合Spring】
一.CXF简介 CXF是Apache公司下的项目,CXF=Celtix+Xfire:它支持soap1.1.soap1.2,而且能够和spring进行快速无缝整合. 另外jax-ws是Sun公司发布的一 ...
- Mybatis整合Spring
根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持.因此由Mybatis社区自己开发了一个My ...
- mybatis入门_一对多,多对多映射以及整合spring框架
一.一对多映射. 1.1 一对多映射之根据多的一方关联查询一的一方 示例:查询出具体的订单信息,同时也查询出来订单的用户信息. 引入的订单表如下所示: 框选出来的为具体的外键. 订单的Pojo类如下所 ...
- 《SSM框架搭建》三.整合spring web
感谢学习http://blog.csdn.net/zhshulin/article/details/37956105#,还是修改了spring到最新的版本和接口开发示例 根据前一篇日志,已经有了myb ...
- Maven 整合 spring profile实现多环境自动切换
Maven 整合 spring profile实现多环境自动切换 时间:2014-03-19 15:32来源:Internet 作者:Internet 点击:525次 profile主要用在项目多环境 ...
- TinyFrame续篇:整合Spring IOC实现依赖注入
上一篇主要讲解了如何搭建基于CodeFirst的ORM,并且在章节末我们获取了上下文对象的实例:BookContext.这节主要承接上一篇,来讲解如何整合Spring IOC容器实现控制反转,依赖注入 ...
- Ehcache 整合Spring 使用页面、对象缓存
Ehcache 整合Spring 使用页面.对象缓存 Ehcache在很多项目中都出现过,用法也比较简单.一 般的加些配置就可以了,而且Ehcache可以对页面.对象.数据进行缓存,同时支持集群/分布 ...
- webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成
首先到CXF官网及spring官网下载相关jar架包,这个不多说.webservice是干嘛用的也不多说. 入门例子 模拟新增一个用户,并返回新增结果,成功还是失败. 大概的目录如上,很简单. Res ...
- (转)Ehcache 整合Spring 使用页面、对象缓存
Ehcache在很多项目中都出现过,用法也比较简单.一般的加些配置就可以了,而且Ehcache可以对页面.对象.数据进行缓存,同时支持集群/分布式缓存.如果整合Spring.Hibernate也非常的 ...
随机推荐
- JavaScript中的typeof
js中的 typeof 操作符返回一个字符串,表示未经计算的操作数的类型. 其中null.字符串对象.数字对象.布尔对象.日期.数组.正则返回结果都为object,可见typeof返回结果并不精确 测 ...
- OPP的三大特征之封装总结
'''封装: 1.什么是封装? 封装是把什么东西装到容器中,再封闭起来 与隐藏有相似之处,但不是单纯的隐藏 官方解释:封装是指对外部隐藏实现细节,并提供简单的使用接口 封装的好处: 1.提高安全性 2 ...
- Dynamics CRM项目实例之七:站点地图修改,联系人-订单-积分管理
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复138或者20141229可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 前面文章发表后,不 ...
- ArcGIS API for JavaScript 入门教程[7] 再讲视图——View的基本属性
[回顾]上篇花大篇幅讲了ArcGIS Server上的数据服务与部分常用可操作图层的创建关系,还讲了OGC的几个规范. 本篇回到JsAPI 4.x的新特性——视图类中来. 在第3篇讲过,4.x将视图从 ...
- HandlerThread原理分析
HandlerThread是一个内部拥有Handler和Looper的特殊Thread,可以方便地在子线程中处理消息. 简单使用 HandlerThread的使用比较简单. mHandlerThrea ...
- 学习安卓开发[4] - 使用隐式Intent启动短信、联系人、相机应用
在上一篇学习安卓开发[3] - 使用RecyclerView显示列表中了解了在进行列表展示时RecyclerView的使用,本次记录的是在应用中如何通过隐式Intent调用其它应用的功能,比如发短信. ...
- Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and recon
数据库默认模式是主键不可进行修改操作,所以需要运行以下语句. SET SQL_SAFE_UPDATES = 0; -- 出现error1175使用.
- Mysql8.0.11win64重置root用户密码操作
在笔记本和PC上面使用Mysql8.0.11免安装版本,均遇到此问题,记性不太好,现做下笔记. 1.cmd下,先关掉已启动的mysql服务,使用命令:net stop mysql 2.步骤1的cmd窗 ...
- python不能调试的原因
最近有一个python项目,打开项目不能登录,想调试一下看看为什么,发现不能调试了,郁闷了,搞了半天,发现是进程里有多个python.exe,结束掉就好了.
- docker 发布方式尝试
docker 发布方式尝试 目前有个小项目, 尝试用docker的方式来发布, 项目只有一个节点, 使用 kubenate 有点小题大做, 所以采用docker-compose来发布. 发布过程 GI ...