这样使用Jedis妈妈再也不用担心忘记使用close

Jedis 是 Redis 官方首选的 Java 客户端开发包,相信很多人都会使用这个开发包来操作Redis。

但是呢这有一个问题就是每次操作之后都必须调用close方法来关闭避免应用卡死。

下面我们就通过封装Jedis来实现自动调用close

首先定义一个interface类,用于操作Jedis

interface Caller {

    public void call(Jedis jedis);

}

然后对Jedis以及连接池进行简单的封装

public class Redis {

    private JedisPool pool;

    public Redis() {

        this.pool = new JedisPool();

    }

    public void execute(Caller caller) {

        Jedis jedis = pool.getResource();

        try {

            caller.call(jedis);

        } catch (JedisConnectionException e) {

            caller.call(jedis); // 重试一次

        } finally {

            jedis.close();

        }

    }

}

封装之后就可以使用了

public class JedisTest {

    public static void main(String[] args) {

        RedisPool redis = new RedisPool();

        redis.execute(new Caller() {

            @Override

            public void call(Jedis jedis) {

            // do something with jedis

            }

            }); 

        }

}

上述的使用方法还是稍微有点麻烦的,因为调用execute方法还需要执行回调。但是如果你使用的是Java 8及以上的话就可以Lambda表达式。

使用Lambda表达式:

redis.execute(jedis->{    

// do something with jedis

});

完事!!

                                                                         

猜你喜欢

转载自blog.csdn.net/qq_38904271/article/details/106258532