@Override
 public int size() {
   try {
     Long longSize = new Long(cache.dbSize());
     return longSize.intValue();
   } catch (Throwable t) {
     throw new CacheException(t);
   }
 }
 @Override
 public void clear() throws CacheException {
   logger.debug("从redis中删除所有元素");
   try {
     cache.flushDB();
   } catch (Throwable t) {
     throw new CacheException(t);
   }
 }
 @Override
 public V put(K key, V value) throws CacheException {
   logger.debug("根据key从存储 key [" + key + "]");
   try {
     cache.set(getByteKey(key), SerializeUtils.serialize(value));
     return value;
   } catch (Throwable t) {
     throw new CacheException(t);
   }
 }
 @Override
 public V remove(K key) throws CacheException {
   logger.debug("从redis中删除 key [" + key + "]");
   try {
     V previous = get(key);
     cache.del(getByteKey(key));
     return previous;
   } catch (Throwable t) {
     throw new CacheException(t);
   }
 }
 @Override
 public V get(K key) throws CacheException {
   logger.debug("根据key从Redis中获取对象 key [" + key + "]");
   try {
     if (key == null) {
       return null;
     } else {
       byte[] rawValue = cache.get(getByteKey(key));
       @SuppressWarnings("unchecked")
       V value = (V) SerializeUtils.unserialize(rawValue);
       return value;
     }
   } catch (Throwable t) {
     throw new CacheException(t);
   }
 }
 @SuppressWarnings("unchecked")
 @Override
 public Set<K> keys() {
   try {
     Set<byte[]> keys = cache.keys(this.keyPrefix + "*");
     if (CollectionUtils.isEmpty(keys)) {
       return Collections.emptySet();
     } else {
       Set<K> newKeys = new HashSet<K>();
       for (byte[] key : keys) {
         newKeys.add((K) key);
       }
       return newKeys;
     }
   } catch (Throwable t) {
     throw new CacheException(t);
   }
 }
 @Override
 public Collection<V> values() {
   try {
     Set<byte[]> keys = cache.keys(this.keyPrefix + "*");
     if (!CollectionUtils.isEmpty(keys)) {
       List<V> values = new ArrayList<V>(keys.size());
       for (byte[] key : keys) {
         @SuppressWarnings("unchecked")
         V value = get((K) key);
         if (value != null) {
           values.add(value);
         }
       }
       return Collections.unmodifiableList(values);
     } else {
       return Collections.emptyList();
     }
   } catch (Throwable t) {
     throw new CacheException(t);
   }
 }