转:

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,用上后会让你有种便秘一星期后突然通便的清爽)

  1. <dependency>
  2. <groupId>org.redisson</groupId>
  3. <artifactId>redisson</artifactId>
  4. <version>2.8.2</version>
  5. </dependency>  </span>

接下来新建redisson.xml文件:(可参考wiki:redisson配置教程

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:redisson="http://redisson.org/schema/redisson"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd
  10. http://redisson.org/schema/redisson
  11. http://redisson.org/schema/redisson/redisson.xsd">
  12. <!--
  13. 单台redis机器配置
  14. <redisson:client id="redissonClient">
  15. <redisson:single-server address="192.168.2.100:7000" connection-pool-size="30"/>
  16. </redisson:client>
  17. -->
  18. <!-- redis集群配置 -->
  19. <redisson:client id="redissonClient" >
  20. <redisson:cluster-servers scan-interval="10000">   <!-- //scan-interval:集群状态扫描间隔时间,单位是毫秒 -->
  21. <redisson:node-address value="192.168.2.100:7000"></redisson:node-address>
  22. <redisson:node-address value="192.168.2.100:7001"></redisson:node-address>
  23. <redisson:node-address value="192.168.2.100:7002"></redisson:node-address>
  24. <redisson:node-address value="192.168.2.100:7003"></redisson:node-address>
  25. <redisson:node-address value="192.168.2.100:7004"></redisson:node-address>
  26. <redisson:node-address value="192.168.2.100:7005"></redisson:node-address>
  27. </redisson:cluster-servers>
  28. </redisson:client>
  29. </beans>

然后在Application.xml中引入redisson.xml:<import resource="classpath:/spring/redisson.xml" />     (路径记得自己改哦~)

至此我们redisson的环境就配置好了。接下来就是怎么操作它来操作redis:

首先新建一个工具类RedissonUtils:

package com.basic.common.utils.redis;

  1. import java.util.Map;
  2. import org.redisson.api.RAtomicLong;
  3. import org.redisson.api.RBucket;
  4. import org.redisson.api.RCountDownLatch;
  5. import org.redisson.api.RDeque;
  6. import org.redisson.api.RList;
  7. import org.redisson.api.RLock;
  8. import org.redisson.api.RMap;
  9. import org.redisson.api.RQueue;
  10. import org.redisson.api.RSet;
  11. import org.redisson.api.RSortedSet;
  12. import org.redisson.api.RTopic;
  13. import org.redisson.api.RedissonClient;
  14. import org.springframework.stereotype.Service;
  15. import com.basic.common.utils.generator.CollectionObjectConvert;
  16. @Service
  17. public class RedissonUtils{
  18. /**
  19. * 获取字符串对象
  20. * @param redisson
  21. * @param t
  22. * @param objectName
  23. * @return
  24. */
  25. public static <T> RBucket<T> getRBucket(RedissonClient redissonClient,String objectName){
  26. RBucket<T> bucket=redissonClient.getBucket(objectName);
  27. return bucket;
  28. }
  29. /**
  30. * 获取Map对象
  31. * @param redisson
  32. * @param objectName
  33. * @return
  34. */
  35. public static <K,V> RMap<K, V> getRMap(RedissonClient redissonClient,String objectName){
  36. RMap<K, V> map=redissonClient.getMap(objectName);
  37. return map;
  38. }
  39. /**
  40. * 获取有序集合
  41. * @param redisson
  42. * @param objectName
  43. * @return
  44. */
  45. public static <V> RSortedSet<V> getRSortedSet(RedissonClient redissonClient,String objectName){
  46. RSortedSet<V> sortedSet=redissonClient.getSortedSet(objectName);
  47. return sortedSet;
  48. }
  49. /**
  50. * 获取集合
  51. * @param redisson
  52. * @param objectName
  53. * @return
  54. */
  55. public static <V> RSet<V> getRSet(RedissonClient redissonClient,String objectName){
  56. RSet<V> rSet=redissonClient.getSet(objectName);
  57. return rSet;
  58. }
  59. /**
  60. * 获取列表
  61. * @param redisson
  62. * @param objectName
  63. * @return
  64. */
  65. public static <V> RList<V> getRList(RedissonClient redissonClient,String objectName){
  66. RList<V> rList=redissonClient.getList(objectName);
  67. return rList;
  68. }
  69. /**
  70. * 获取队列
  71. * @param redisson
  72. * @param objectName
  73. * @return
  74. */
  75. public static <V> RQueue<V> getRQueue(RedissonClient redissonClient,String objectName){
  76. RQueue<V> rQueue=redissonClient.getQueue(objectName);
  77. return rQueue;
  78. }
  79. /**
  80. * 获取双端队列
  81. * @param redisson
  82. * @param objectName
  83. * @return
  84. */
  85. public static <V> RDeque<V> getRDeque(RedissonClient redissonClient,String objectName){
  86. RDeque<V> rDeque=redissonClient.getDeque(objectName);
  87. return rDeque;
  88. }
  89. /**
  90. * 此方法不可用在Redisson 1.2 中
  91. * 在1.2.2版本中 可用
  92. * @param redisson
  93. * @param objectName
  94. * @return
  95. */
  96. /**
  97. public <V> RBlockingQueue<V> getRBlockingQueue(Redisson redisson,String objectName){
  98. RBlockingQueue rb=redisson.getBlockingQueue(objectName);
  99. return rb;
  100. }*/
  101. /**
  102. * 获取锁
  103. * @param redisson
  104. * @param objectName
  105. * @return
  106. */
  107. public static RLock getRLock(RedissonClient redissonClient,String objectName){
  108. RLock rLock=redissonClient.getLock(objectName);
  109. return rLock;
  110. }
  111. /**
  112. * 获取原子数
  113. * @param redisson
  114. * @param objectName
  115. * @return
  116. */
  117. public static RAtomicLong getRAtomicLong(RedissonClient redissonClient,String objectName){
  118. RAtomicLong rAtomicLong=redissonClient.getAtomicLong(objectName);
  119. return rAtomicLong;
  120. }
  121. /**
  122. * 获取记数锁
  123. * @param redisson
  124. * @param objectName
  125. * @return
  126. */
  127. public static RCountDownLatch getRCountDownLatch(RedissonClient redissonClient,String objectName){
  128. RCountDownLatch rCountDownLatch=redissonClient.getCountDownLatch(objectName);
  129. return rCountDownLatch;
  130. }
  131. /**
  132. * 获取消息的Topic
  133. * @param redisson
  134. * @param objectName
  135. * @return
  136. */
  137. public static <M> RTopic<M> getRTopic(RedissonClient redissonClient,String objectName){
  138. RTopic<M> rTopic=redissonClient.getTopic(objectName);
  139. return rTopic;
  140. }
  141. }

然后我们需要在调用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的更多相关文章

  1. 【Java EE 学习 81】【CXF框架】【CXF整合Spring】

    一.CXF简介 CXF是Apache公司下的项目,CXF=Celtix+Xfire:它支持soap1.1.soap1.2,而且能够和spring进行快速无缝整合. 另外jax-ws是Sun公司发布的一 ...

  2. Mybatis整合Spring

    根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持.因此由Mybatis社区自己开发了一个My ...

  3. mybatis入门_一对多,多对多映射以及整合spring框架

    一.一对多映射. 1.1 一对多映射之根据多的一方关联查询一的一方 示例:查询出具体的订单信息,同时也查询出来订单的用户信息. 引入的订单表如下所示: 框选出来的为具体的外键. 订单的Pojo类如下所 ...

  4. 《SSM框架搭建》三.整合spring web

    感谢学习http://blog.csdn.net/zhshulin/article/details/37956105#,还是修改了spring到最新的版本和接口开发示例 根据前一篇日志,已经有了myb ...

  5. Maven 整合 spring profile实现多环境自动切换

    Maven 整合 spring profile实现多环境自动切换 时间:2014-03-19 15:32来源:Internet 作者:Internet 点击:525次 profile主要用在项目多环境 ...

  6. TinyFrame续篇:整合Spring IOC实现依赖注入

    上一篇主要讲解了如何搭建基于CodeFirst的ORM,并且在章节末我们获取了上下文对象的实例:BookContext.这节主要承接上一篇,来讲解如何整合Spring IOC容器实现控制反转,依赖注入 ...

  7. Ehcache 整合Spring 使用页面、对象缓存

    Ehcache 整合Spring 使用页面.对象缓存 Ehcache在很多项目中都出现过,用法也比较简单.一 般的加些配置就可以了,而且Ehcache可以对页面.对象.数据进行缓存,同时支持集群/分布 ...

  8. webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成

    首先到CXF官网及spring官网下载相关jar架包,这个不多说.webservice是干嘛用的也不多说. 入门例子 模拟新增一个用户,并返回新增结果,成功还是失败. 大概的目录如上,很简单. Res ...

  9. (转)Ehcache 整合Spring 使用页面、对象缓存

    Ehcache在很多项目中都出现过,用法也比较简单.一般的加些配置就可以了,而且Ehcache可以对页面.对象.数据进行缓存,同时支持集群/分布式缓存.如果整合Spring.Hibernate也非常的 ...

随机推荐

  1. Django 无名参数与有名参数

    无名参数 配置 urls ,我们需要导入 url 模块,以()定义一个无名的变量 from django.contrib import admin from django.urls import pa ...

  2. Fragment生命周期以及使用时的小问题

    前言- 昨天在写UI的时候用到了FRAGMENT,发现自己对此还不是非常了解,借此机会记录一下 Fragment的生命周期- 官方生命周期图: Fragment每个生命周期方法的意义.作用- onVi ...

  3. 解决 Docker Image的UTF-8中文字符集的问题(以Oracle为例)

    最近因业务需要,需要搭建一个Oracle数据库,当然Oracle数据库支持Linux,但是在上面搭建很是复杂,所以我想起了Docker ,果然在上面发现了一个OracleDB的镜像,所以下载之,运行, ...

  4. DVWA 黑客攻防演练(十一) 存储型 XSS 攻击 Stored Cross Site Scripting

    上一篇文章会介绍了反射型 XSS 攻击.本文主要是通过 dvwa 介绍存储型 XSS 攻击.存储型 XSS 攻击影响范围极大.比如是微博.贴吧之类的,若有注入漏洞,再假如攻击者能用上一篇文章类似的代码 ...

  5. 商米D1S一体机设置搜狗手写输入法图解

    按照下图步骤,一步步设置即可,询问全新的时候需要点击允许. 商米应用市场搜索下载搜狗输入法,并安装 安装完成后,点击桌面搜狗输入法,选择启用搜狗输入法,如图 点击启用后,在虚拟键盘中选择搜狗输入法,并 ...

  6. 题解 P1944 最长括号匹配_NOI导刊2009提高(1)

    栈,模拟 把每个元素逐个入栈 如果和栈顶元素匹配,那么一块弹出去,同时标记这里是可匹配的. 取出连续的,最长的可匹配的序列即可. #include <iostream> #include ...

  7. 老白关于rac性能调优的建议(10gRAC)

    RAC应用设计方面需要在底层做很有设计.虽然ORACLE的售前人员总是说RAC的扩展性是透明的,只要把应用分到不同的节点,就可以平滑的扩展系统能力了.而事实上,RAC的CACHE FUSION机制决定 ...

  8. 六 Struts 拦截器、OGNL表达式

    一.OGNL表达式1.概念:是表达式语言,专门用来访问对象取值用的.2.对比EL表达式使用场景: A.EL主要用在web的jsp页面取值 B.OGNL适用以下环境 1.java程序中 2.在页面使用( ...

  9. TypeScript 之类型判断

    在使用 Angular 做项目的时候,对 TypeScript 的类型判断不太熟练,为了方便查找,特意对 TypeScript 的类型判断做了简单梳理.文章只是 TS 官网的内容摘要,没有高深的知识, ...

  10. javaweb项目环境搭建,jdk,tomcat,myeclipse,sqlserver安装 配置

    myeclipse是一个java的IDE,myeclipse中虽然内置了JDK和Tomacat服务器,但可以不使用,通过进行相应的配置,使用自行安装的JDK和Tomcat.安装Tomcat之前,一定要 ...