RedisCache

/**

  • Redis缓存管理类
  • @author Administrator

*/
public class RedisCache implements Cache{

  private RedisTemplate<String, Object> redisTemplate;  
  private String name;  
  public RedisTemplate<String, Object> getRedisTemplate() { 
    return redisTemplate;  
  } 
     
  public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) { 
    this.redisTemplate = redisTemplate;  
  } 
     
  public void setName(String name) { 
    this.name = name;  
  } 
     
  @Override 
  public String getName() { 
    // TODO Auto-generated method stub  
    return this.name;  
  } 
  
  @Override 
  public Object getNativeCache() { 
   // TODO Auto-generated method stub  
    return this.redisTemplate;  
  } 
   
  @Override 
  public ValueWrapper get(Object key) { 
   // TODO Auto-generated method stub 
   System.out.println("get key"); 
   final String keyf = key.toString(); 
   Object object = null; 
   
   
   object = redisTemplate.execute(new RedisCallback<Object>() { 
   public Object doInRedis(RedisConnection connection)  
         throws DataAccessException { 
     byte[] key = keyf.getBytes(); 
     byte[] value = connection.get(key); 
     if (value == null) { 
       return null; 
      } 
     return toObject(value); 
     } 
    }); 
    return (object != null ? new SimpleValueWrapper(object) : null); 
   } 
   
   @Override 
   public void put(Object key, Object value) { 
    // TODO Auto-generated method stub 
    System.out.println("put key"); 
    final String keyf = key.toString();  
    final Object valuef = value;  
    final long liveTime = 86400;  
    redisTemplate.execute(new RedisCallback<Long>() {  
      public Long doInRedis(RedisConnection connection)  
          throws DataAccessException {  
        byte[] keyb = keyf.getBytes();  
        byte[] valueb = toByteArray(valuef);  
        connection.set(keyb, valueb);  
        if (liveTime > 0) {  
          connection.expire(keyb, liveTime);  
         }  
        return 1L;  
       }  
     });  
   } 
  
   private byte[] toByteArray(Object obj) {  
     byte[] bytes = null;  
     ByteArrayOutputStream bos = new ByteArrayOutputStream();  
     try {  
      ObjectOutputStream oos = new ObjectOutputStream(bos);  
      oos.writeObject(obj);  
      oos.flush();  
      bytes = bos.toByteArray();  
      oos.close();  
      bos.close();  
     }catch (IOException ex) {  
        ex.printStackTrace();  
     }  
     return bytes;  
    }  
  
    private Object toObject(byte[] bytes) { 
     Object obj = null;  
      try { 
        ByteArrayInputStream bis = new ByteArrayInputStream(bytes);  
        ObjectInputStream ois = new ObjectInputStream(bis);  
        obj = ois.readObject();  
        ois.close();  
        bis.close();  
      } catch (IOException ex) {  
        ex.printStackTrace();  
      } catch (ClassNotFoundException ex) {  
        ex.printStackTrace();  
      }  
      return obj;  
    } 
   
    @Override 
    public void evict(Object key) {  
     // TODO Auto-generated method stub  
     System.out.println("del key"); 
     final String keyf = key.toString();  
     redisTemplate.execute(new RedisCallback<Long>() {  
     public Long doInRedis(RedisConnection connection)  
          throws DataAccessException {  
    	 
    	 
    	 
       return connection.del(keyf.getBytes());  
       
      }  
     });  
    } 
   
    @Override 
    public void clear() {  
      // TODO Auto-generated method stub  
      System.out.println("clear key"); 
      redisTemplate.execute(new RedisCallback<String>() {  
        public String doInRedis(RedisConnection connection)  
            throws DataAccessException {  
         connection.flushDb();  
          return "ok";  
        }  
      });  
    } 
  
    @Override
    public <T> T get(Object key, Class<T> type) { 
      // TODO Auto-generated method stub 
      return null; 
    } 
    
    @Override
    public ValueWrapper putIfAbsent(Object key, Object value) { 
      // TODO Auto-generated method stub 
      return null; 
    } 

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值