Skip to content

Instantly share code, notes, and snippets.

@ryu1
Forked from allwefantasy/gist:3615650
Created February 14, 2014 09:05
Show Gist options
  • Save ryu1/8997990 to your computer and use it in GitHub Desktop.
Save ryu1/8997990 to your computer and use it in GitHub Desktop.

Revisions

  1. @allwefantasy allwefantasy created this gist Sep 4, 2012.
    192 changes: 192 additions & 0 deletions gistfile1.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,192 @@
    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<String> 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<String> 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<byte[]> list = jedis.mget(bkeys);
    List<String> temp_list = new ArrayList<String>(list.size());
    for (byte[] temp : list) {
    temp_list.add(GZip.decodeWithGZip(temp));
    }
    return temp_list;
    } finally {
    revert(jedis);
    }
    }

    public Set<String> sCopy(String key, String new_key) {
    Jedis jedis = borrow();
    try {
    Set<String> 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<String> oldSets = jedis.smembers(key);
    for (String str : oldSets) {
    jedis.del(oldKey + ":" + str);
    }
    jedis.del(key);
    } finally {
    revert(jedis);
    }
    }

    public Set<String> sMove(String key, String new_key) {
    Jedis jedis = borrow();
    try {
    Set<String> 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);
    }
    }