pgup12 发表于 2017-12-12 08:48:50

SpringMVC + MyBatis + Mysql + Redis(作为二级缓存) 配置

/**  
*
  
* @描述: 使用第三方内存数据库Redis作为二级缓存
  
* @版权: Copyright (c) 2016
  
* @作者: xiad
  
* @版本: 1.0
  
* @创建日期: 2016年3月2日
  
* @创建时间: 下午8:02:57
  
*/

  
public>  
{
  
   private static final Logger logger = LoggerFactory.getLogger(RedisCache.class);
  

  
   private static JedisConnectionFactory jedisConnectionFactory;
  


  
   private final String>  

  
   /**
  
      * The {@code ReadWriteLock}.
  
      */
  
   private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
  


  
   public RedisCache(final String>  
         if (id == null) {

  
             throw new IllegalArgumentException("Cache instances require an>  
         }

  
         logger.debug("MybatisRedisCache:id=" +>
  
         this.id =>  
   }
  

  
   @Override
  
   public void clear()
  
   {
  
         JedisConnection connection = null;
  
         try
  
         {
  
             connection = jedisConnectionFactory.getConnection();
  
             connection.flushDb();
  
             connection.flushAll();
  
         }
  
         catch (JedisConnectionException e)
  
         {
  
             e.printStackTrace();
  
         }
  
         finally
  
         {
  
             if (connection != null) {
  
               connection.close();
  
             }
  
         }
  
   }
  

  
   @Override
  
   public String getId()
  
   {
  
         return this.id;
  
   }
  

  
   @Override
  
   public Object getObject(Object key)
  
   {
  
         Object result = null;
  
         JedisConnection connection = null;
  
         try
  
         {
  
             connection = jedisConnectionFactory.getConnection();
  
             RedisSerializer<Object> serializer = new JdkSerializationRedisSerializer();
  
             result = serializer.deserialize(connection.get(serializer.serialize(key)));
  
         }
  
         catch (JedisConnectionException e)
  
         {
  
             e.printStackTrace();
  
         }
  
         finally
  
         {
  
             if (connection != null) {
  
               connection.close();
  
             }
  
         }
  
         return result;
  
   }
  

  
   @Override
  
   public ReadWriteLock getReadWriteLock()
  
   {
  
         return this.readWriteLock;
  
   }
  

  
   @Override
  
   public int getSize()
  
   {
  
         int result = 0;
  
         JedisConnection connection = null;
  
         try
  
         {
  
             connection = jedisConnectionFactory.getConnection();
  
             result = Integer.valueOf(connection.dbSize().toString());
  
         }
  
         catch (JedisConnectionException e)
  
         {
  
             e.printStackTrace();
  
         }
  
         finally
  
         {
  
             if (connection != null) {
  
               connection.close();
  
             }
  
         }
  
         return result;
  
   }
  

  
   @Override
  
   public void putObject(Object key, Object value)
  
   {
  
         JedisConnection connection = null;
  
         try
  
         {
  
             connection = jedisConnectionFactory.getConnection();
  
             RedisSerializer<Object> serializer = new JdkSerializationRedisSerializer();
  
             connection.set(serializer.serialize(key), serializer.serialize(value));
  
         }
  
         catch (JedisConnectionException e)
  
         {
  
             e.printStackTrace();
  
         }
  
         finally
  
         {
  
             if (connection != null) {
  
               connection.close();
  
             }
  
         }
  
   }
  

  
   @Override
  
   public Object removeObject(Object key)
  
   {
  
         JedisConnection connection = null;
  
         Object result = null;
  
         try
  
         {
  
             connection = jedisConnectionFactory.getConnection();
  
             RedisSerializer<Object> serializer = new JdkSerializationRedisSerializer();
  
             result =connection.expire(serializer.serialize(key), 0);
  
         }
  
         catch (JedisConnectionException e)
  
         {
  
             e.printStackTrace();
  
         }
  
         finally
  
         {
  
             if (connection != null) {
  
               connection.close();
  
             }
  
         }
  
         return result;
  
   }
  

  
   public static void setJedisConnectionFactory(JedisConnectionFactory jedisConnectionFactory) {
  
         RedisCache.jedisConnectionFactory = jedisConnectionFactory;
  
   }
  

  
}
页: [1]
查看完整版本: SpringMVC + MyBatis + Mysql + Redis(作为二级缓存) 配置