public class RedisClient { private JedisPool pool; @Inject public RedisClient(Settings settings) { try { pool = new JedisPool(new JedisPoolConfig(), settings.get("redis.host"), settings.getAsInt("redis.port", 6379)); } catch (SettingsException e) { // ignore } } public interface Callback { public void execute(Jedis jedis); } public void operate(Callback callback) { Jedis jedis = borrow(); try { callback.execute(jedis); } finally { revert(jedis); } } public String get(String key) { Jedis jedis = borrow(); try { return jedis.get(key); } finally { revert(jedis); } } public String bGet(String key) { Jedis jedis = borrow(); try { byte[] value = jedis.get(key.getBytes()); if (value != null) return GZip.decodeWithGZip(value); return null; } finally { revert(jedis); } } public String set(String key, String value) { Jedis jedis = borrow(); try { return jedis.set(key, value); } finally { revert(jedis); } } public void del(String key) { Jedis jedis = borrow(); try { jedis.del(key); } finally { revert(jedis); } } public String bSet(String key, String value) { Jedis jedis = borrow(); try { return jedis.set(key.getBytes(), GZip.encodeWithGZip(value)); } finally { revert(jedis); } } public byte[] bGetJ(String key) { Jedis jedis = borrow(); try { byte[] value = jedis.get(key.getBytes()); if (value != null) return value; return null; } finally { revert(jedis); } } public String bSetJ(String key, byte[] value) { Jedis jedis = borrow(); try { return jedis.set(key.getBytes(), value); } finally { revert(jedis); } } public boolean exits(String key) { Jedis jedis = borrow(); try { return jedis.exists(key); } finally { revert(jedis); } } public List mget(String[] keys) { Jedis jedis = borrow(); try { return jedis.mget(keys); } finally { revert(jedis); } } public String info() { Jedis jedis = borrow(); try { return jedis.info(); } finally { revert(jedis); } } public List bMget(String[] keys) { Jedis jedis = borrow(); int len = keys.length; byte[][] bkeys = new byte[len][]; for (int i = 0; i < keys.length; i++) { bkeys[i] = keys[i].getBytes(); } try { List list = jedis.mget(bkeys); List temp_list = new ArrayList(list.size()); for (byte[] temp : list) { temp_list.add(GZip.decodeWithGZip(temp)); } return temp_list; } finally { revert(jedis); } } public Set sCopy(String key, String new_key) { Jedis jedis = borrow(); try { Set oldSets = jedis.smembers(key); for (String str : oldSets) { jedis.sadd(new_key, str); } return oldSets; } finally { revert(jedis); } } public void sClear(String key, String oldKey) { Jedis jedis = borrow(); try { Set oldSets = jedis.smembers(key); for (String str : oldSets) { jedis.del(oldKey + ":" + str); } jedis.del(key); } finally { revert(jedis); } } public Set sMove(String key, String new_key) { Jedis jedis = borrow(); try { Set oldSets = jedis.smembers(key); for (String str : oldSets) { jedis.smove(key, new_key, str); } return oldSets; } finally { revert(jedis); } } public void destory() { pool.destroy(); } public Jedis borrow() { return pool.getResource(); } public void revert(Jedis jedis) { pool.returnResource(jedis); } }