redisson整合spring

来源:互联网 发布:实体关系图软件 编辑:程序博客网 时间:2024/06/16 14:43

首先讲下什么是RedissonRedisson是一个在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>  

接下来新建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;@Servicepublic 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以上的,官方发布的版本,不然会出现莫名其妙的错误

原创粉丝点击