redisson整合spring

时间:2021-06-11 00:44:12

转:

redisson整合spring

转:

原文://bbsmax.ikafan.com/static/L3Byb3h5L2h0dHAvYmxvZy5jc2RuLm5ldC93YW5nX2tlbmcvYXJ0aWNsZS9kZXRhaWxzLzczNTQ5Mjc0.jpg

首先讲下什么是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到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入门&lowbar;一对多&comma;多对多映射以及整合spring框架

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

  4. 《SSM框架搭建》三&period;整合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 服务端例子&plus;客户端例子&plus;CXF整合spring服务端测试&plus;生成wsdl文件 &plus;cxf客户端代码自动生成

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

  9. &lpar;转&rpar;Ehcache 整合Spring 使用页面、对象缓存

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

随机推荐

  1. SQL 将一列多行数据合并为一行 FOR XML PATH

    FOR XML PATH 方法是用于将查询结果集以XML形式展示,这样展示方式的好处不言而喻.现在我要介绍的FOR XML PATH的"另类"用法. 首先,我们先来看看它的正常用法 ...

  2. HDU 4432 Sum of divisors (水题,进制转换)

    题意:给定 n,m,把 n 的所有因数转 m 进制,再把各都平方,求和. 析:按它的要求做就好,注意的是,是因数,不可能有重复的...比如4的因数只有一个2,还有就是输出10进制以上的,要用AB.. ...

  3. Nltest

    查看登陆到的DC:

  4. 使用webpack配置vue项目代理 (超简单)

    我们都知道,前端开发跨域是一个很常见的问题,当然跨域的方法也有很多,现在我就给大家分享一个在vue项目中如何使用webpack做代理,步骤简单,操作方便,本人亲测,巨好使

  5. Linux配置文件注释注意:行首注释,不要行中注释

    正确注释: # 注释语句 错误注释:这种注释可能导致文件读取异常或报错 有效语句 # 注释语句 # 注释语句

  6. 深入理解DirectByteBuffer

    介绍 最近在工作中使用到了DirectBuffer来进行临时数据的存放,由于使用的是堆外内存,省去了数据到内核的拷贝,因此效率比用ByteBuffer要高不少.之前看过许多介绍DirectBuffer ...

  7. Python中的xxx&plus;&equals;xxx和xxx&equals;xxx&plus;xxx一些区别及执行过程

    预知小知识: Python中的变量与其他语言稍有差异,如a = 10并不是直接在内存中创建一个变量a其值为10,而是在内存中创建一个a这个a指向这个10,在Python中所有牵扯到等号的均不是值赋值, ...

  8. Python startswith&lpar;&rpar; 函数 判断字符串开头

    Python startswith() 函数 判断字符串开头 函数:startswith() 作用:判断字符串是否以指定字符或子字符串开头 一.函数说明语法:string.startswith(str ...

  9. Git 移动操作

    顾名思义移动(move )操作移动目录或文件从一个位置到另一个.Tom 决定移动到src目录下的源代码.因此,修改后的目录结构看起来会像这样. [tom@CentOS project]$ pwd /h ...

  10. 开机自启动Nginx的脚本

    1.1 编写shell脚本 这里使用的是编写shell脚本的方式来处理 vi /etc/init.d/nginx  (输入下面的代码) #!/bin/bash # nginx Startup scri ...