theme: vue-pro
这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战
温故才能知新(复习一下)
上篇文章我们学习了RedisTemplate中的execute的概念,理解了execute的概念。
execute提供了基础的操作Redis方法的实现,为其他特定数据类型操作方法提供了基础方法的实现。
今天我们是要来学习一下RedisTemplate中的execute方法具体使用方法,并且提供出相应的代码实现,一起来学习吧。
如何正确使用execute方法
execute(RedisCallback\
action)
public <T> T execute(RedisCallback<T> action)
此方法需要传入的参数时一个RedisCallback对象实例,实际是一个Redis连接成功的回调方法,一般都是以下方式去调用的。
通过Redis的链接来操作Redis数据库中的键值。
代码使用:
redisTemplate.execute((connection) -> { return connection.del(new byte[][]{"redis-key"}); });
execute(RedisCallback\
action, boolean exposeConnection)
public <T> T execute(RedisCallback<T> action, boolean exposeConnection)
大家可以看得出来,这个方法同上面的方法,只是多了一个exposeConnection的布尔类型参数,那么这个参数是干什么的?有什么作用呢?
exposeConnection参数的含义是是否要暴露connection,如果为true,那么就可以在回调函数中使用当前连接connection对象。
代码使用:
redisTemplate.execute((connection) -> { return connection.del(new byte[][]{"redis-key"}); }, true);
execute(RedisCallback\
action, boolean exposeConnection, boolean pipeline)
public <T> T execute(RedisCallback<T> action, boolean exposeConnection, boolean pipeline)
如果你看了这几个方法的源码,你就会发现,前面三个execute方法的核心其实就是这个,因为前两个方法依然会调用这个方法,只不过多了两个参数值而已。
exposeConnection我们已经说过了,pipeline的含义则是是否开启管道,管道是可以承载一定数据的链路。
代码使用:
redisTemplate.execute((connection) -> { return connection.del(new byte[][]{"redis-key"}); }, true, false);
execute(SessionCallback\
session)
public <T> T execute(SessionCallback<T> session)
这个方法有所不同,因为参数和前三个参数不一样了,之前的回调函数是RedisCallback,这个方法的回调是SessionCallback回调对象。
是可以传入SessionCallback回调对象的方法。
注意
这里要注意一点,虽然execute方法是底层方法,但是并不代表一定要用,我们在日常开发中其实最好还是使用基于execute方法封装的一些特定数据类型的操作Redis方法,因为execute方法使用起来并没有其他的方法简单,反而更容易出错。
小结
今天学习了RedisTemplate的execute相关的几个重载方法是如何使用的,不知道大家有什么样的心得呢?