redisson整合spring

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

 
	org.redisson
	redisson
	2.8.2 
  

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



   
     
     
     	
           
        	
        	
        	
        	
        	
        	
        
        
    

然后在Application.xml中引入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  RBucket getRBucket(RedissonClient redissonClient,String objectName){  
        RBucket bucket=redissonClient.getBucket(objectName);  
        return bucket;  
    }  
      
    /** 
     * 获取Map对象 
     * @param redisson 
     * @param objectName 
     * @return 
     */  
    public static  RMap getRMap(RedissonClient redissonClient,String objectName){  
        RMap map=redissonClient.getMap(objectName);  
        return map;  
    }  
      
    /** 
     * 获取有序集合 
     * @param redisson 
     * @param objectName 
     * @return 
     */  
    public static  RSortedSet getRSortedSet(RedissonClient redissonClient,String objectName){  
        RSortedSet sortedSet=redissonClient.getSortedSet(objectName);  
        return sortedSet;  
    }  
      
    /** 
     * 获取集合 
     * @param redisson 
     * @param objectName 
     * @return 
     */  
    public static  RSet getRSet(RedissonClient redissonClient,String objectName){  
        RSet rSet=redissonClient.getSet(objectName);  
        return rSet;  
    }  
      
    /** 
     * 获取列表 
     * @param redisson 
     * @param objectName 
     * @return 
     */  
    public static  RList getRList(RedissonClient redissonClient,String objectName){  
        RList rList=redissonClient.getList(objectName);  
        return rList;  
    }  
      
    /** 
     * 获取队列 
     * @param redisson 
     * @param objectName 
     * @return 
     */  
    public static  RQueue getRQueue(RedissonClient redissonClient,String objectName){  
        RQueue rQueue=redissonClient.getQueue(objectName);  
        return rQueue;  
    }  
      
    /** 
     * 获取双端队列 
     * @param redisson 
     * @param objectName 
     * @return 
     */  
    public static  RDeque getRDeque(RedissonClient redissonClient,String objectName){  
        RDeque rDeque=redissonClient.getDeque(objectName);  
        return rDeque;  
    }  
      
    /** 
     * 此方法不可用在Redisson 1.2 中  
     * 在1.2.2版本中 可用 
     * @param redisson 
     * @param objectName 
     * @return 
     */  
    /** 
    public  RBlockingQueue 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  RTopic getRTopic(RedissonClient redissonClient,String objectName){  
         RTopic rTopic=redissonClient.getTopic(objectName);  
         return rTopic;  
    }  
    
    
}

然后我们需要在调用RedissonUtils的类中依赖进RedissonClient 

@Autowired  

private RedissonClient redisson;

只后便可以对redis进行操作啦

RMap map = RedissonUtils.getRMap(redisson,key);

map.put("key","value");     调用到这个语句的同时就已经对redis中的数据进行了修改。 


注意!redis最好是3.0以上的,官方发布的版本,不然会出现莫名其妙的错误

你可能感兴趣的:(redis,redisson,spring)