public long size() { return cache.withJedisCallable( new RedisCallable<Long>() { @Override public Long call(Jedis jedis) { return jedis.hlen(id); } }); }
public long addAndGet(final String key, final long add) { return cache.withJedisCallable( new RedisCallable<Long>() { @Override public Long call(Jedis jedis) { return jedis.hincrBy(id, key, add); } }); }
public long[] getAll(final String... keys) { return cache.withJedisCallable( new RedisCallable<long[]>() { @Override public long[] call(Jedis jedis) { List<String> ret = jedis.hmget(id, keys); return toArray(ret); } }); }
public String[] keys() { return cache.withJedisCallable( new RedisCallable<String[]>() { @Override public String[] call(Jedis jedis) { Set<String> result = jedis.hkeys(id); return result.toArray(new String[result.size()]); } }); }
public long[] values() { return cache.withJedisCallable( new RedisCallable<long[]>() { @Override public long[] call(Jedis jedis) { List<String> result = jedis.hvals(id); return toArray(result); } }); }
public long get(final String key) { return cache.withJedisCallable( new RedisCallable<Long>() { @Override public Long call(Jedis jedis) { String v = jedis.hget(id, key); if (null == v || 0 == v.length()) { return -1L; } return Long.parseLong(v); } }); }
@SuppressWarnings("unchecked") public Set<Map.Entry<String, Long>> entrySet() { return cache.withJedisCallable( new RedisCallable<Set<Map.Entry<String, Long>>>() { @Override public Set<Map.Entry<String, Long>> call(Jedis jedis) { Set<Map.Entry<String, Long>> result = new HashSet<Map.Entry<String, Long>>(); for (Map.Entry<String, String> entry : jedis.hgetAll(id).entrySet()) { result.add(new Entry(entry.getKey(), entry.getValue())); } return result; } }); }
public long[] addAndGetAll(final Map<String, Long> values) { return cache.withJedisCallable( new RedisCallable<long[]>() { @Override public long[] call(Jedis jedis) { Pipeline pipeline = jedis.pipelined(); for (Map.Entry<String, Long> s : values.entrySet()) { pipeline.hincrBy(id, s.getKey(), s.getValue()); } List r = pipeline.syncAndReturnAll(); long[] result = new long[r.size()]; int i = 0; for (Object o : r) { result[i++] = (null == o) ? 0 : (Long) o; } return result; } }); }