RedisTemplate中的execute方法如何使用

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: execute提供了基础的操作Redis方法的实现,为其他特定数据类型操作方法提供了基础方法的实现。今天我们是要来学习一下RedisTemplate中的execute方法具体使用方法,并且提供出相应的代码实现。

温故才能知新(复习一下)


上篇文章我们学习了RedisTemplate中的execute的概念,理解了execute的概念。

execute提供了基础的操作Redis方法的实现,为其他特定数据类型操作方法提供了基础方法的实现。


今天我们是要来学习一下RedisTemplate中的execute方法具体使用方法,并且提供出相应的代码实现,一起来学习吧。


如何正确使用execute方法


execute(RedisCallback<T> action)

public <T> T execute(RedisCallback<T> action)


此方法需要传入的参数时一个RedisCallback对象实例,实际是一个Redis连接成功的回调方法,一般都是以下方式去调用的。

通过Redis的链接来操作Redis数据库中的键值。

代码使用:

redisTemplate.execute((connection) -> {
    return connection.del(new byte[][]{"redis-key"});
});

execute(RedisCallback<T> 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<T> 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<T> session)

public <T> T execute(SessionCallback<T> session)


这个方法有所不同,因为参数和前三个参数不一样了,之前的回调函数是RedisCallback,这个方法的回调是SessionCallback回调对象。


是可以传入SessionCallback回调对象的方法。


注意


这里要注意一点,虽然execute方法是底层方法,但是并不代表一定要用,我们在日常开发中其实最好还是使用基于execute方法封装的一些特定数据类型的操作Redis方法,因为execute方法使用起来并没有其他的方法简单,反而更容易出错。


小结


今天学习了RedisTemplate的execute相关的几个重载方法是如何使用的,不知道大家有什么样的心得呢?



相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
存储 NoSQL Redis
RedisTemplate常用方法总结
RedisTemplate常用方法总结
|
3月前
|
关系型数据库 MySQL Java
解决问题:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowe
解决问题:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowe
77 0
|
3月前
|
Java 数据库连接 mybatis
mybatis返回结果为List<Map<String, Object>>的写法
mybatis返回结果为List<Map<String, Object>>的写法
|
9月前
|
存储 缓存 NoSQL
【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )
【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )
|
9月前
|
存储 消息中间件 缓存
从源码上聊聊Redis-String、List的结构实现
本文的数据类型只讲底层结构和部分机制,不讲具体的使用,使用的话自行bing,但是会提一些应用场景
139 1
从源码上聊聊Redis-String、List的结构实现
|
11月前
|
存储 NoSQL Redis
RedisTemplate五种类型常用方法总结
RedisTemplate五种类型常用方法总结
292 0
|
JSON NoSQL Redis
redisTemplate redis lua,attempt to compare two nil values, java.lang.IllegalStateException 解决方案,亲测可用
redisTemplate redis lua,attempt to compare two nil values, java.lang.IllegalStateException 解决方案,亲测可用
redisTemplate redis lua,attempt to compare two nil values, java.lang.IllegalStateException 解决方案,亲测可用
class_create函数源码分析
class_create函数源码分析
|
NoSQL Java Redis
StringRedisTemplate和RedisTemplate的区别(二)
StringRedisTemplate和RedisTemplate的区别(二)
148 0
StringRedisTemplate和RedisTemplate的区别(二)
|
前端开发
前端学习案例-object.keys和Object.getOwnPropertyNames
前端学习案例-object.keys和Object.getOwnPropertyNames
54 0