@Override
  public Set<java.util.Map.Entry<K, V>> entrySet() {
    Set<K> keySet = keySet();
    Collection<V> multiGet = hashOps.multiGet(keySet);

    Iterator<K> keys = keySet.iterator();
    Iterator<V> values = multiGet.iterator();

    Set<Map.Entry<K, V>> entries = new LinkedHashSet<Entry<K, V>>();
    while (keys.hasNext()) {
      entries.add(new DefaultRedisMapEntry(keys.next(), values.next()));
    }

    return entries;
  }
 @Override
 public Long increment(K key, long delta) {
   return hashOps.increment(key, delta);
 }
 @Override
 public DataType getType() {
   return hashOps.getType();
 }
 @Override
 public void rename(String newKey) {
   hashOps.rename(newKey);
 }
 @Override
 public String getKey() {
   return hashOps.getKey();
 }
 @Override
 public Boolean persist() {
   return hashOps.persist();
 }
 @Override
 public Long getExpire() {
   return hashOps.getExpire();
 }
 @Override
 public V get(Object key) {
   return hashOps.get(key);
 }
 @Override
 public Boolean expire(long timeout, TimeUnit unit) {
   return hashOps.expire(timeout, unit);
 }
 @Override
 public Collection<V> values() {
   return hashOps.values();
 }
 @Override
 public int size() {
   return hashOps.size().intValue();
 }
 @Override
 public V remove(Object key) {
   V v = get(key);
   hashOps.delete(key);
   return v;
 }
 @Override
 public void putAll(Map<? extends K, ? extends V> m) {
   hashOps.putAll(m);
 }
 @Override
 public V put(K key, V value) {
   V oldV = get(key);
   hashOps.put(key, value);
   return oldV;
 }
 @Override
 public Set<K> keySet() {
   return hashOps.keys();
 }
 @Override
 public RedisOperations<String, ?> getOperations() {
   return hashOps.getOperations();
 }
 @Override
 public boolean containsKey(Object key) {
   return hashOps.hasKey(key);
 }
 @Override
 public Boolean expireAt(Date date) {
   return hashOps.expireAt(date);
 }