RedisTemplate中的execute方法如何使用

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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月前
|
Java 数据库连接 数据库
save() 和 saveOrUpdate() 方法有什么区别?
【8月更文挑战第21天】
134 0
|
3月前
|
Java 数据库连接 数据库
|
6月前
|
NoSQL Java Redis
redis-学习笔记(string , hash , list , set , zset 前置知识)
redis-学习笔记(string , hash , list , set , zset 前置知识)
33 0
redis-学习笔记(string , hash , list , set , zset 前置知识)
string的简单实现
string的简单实现
61 0
|
6月前
|
Java 数据库连接 mybatis
mybatis返回结果为List<Map<String, Object>>的写法
mybatis返回结果为List<Map<String, Object>>的写法
594 1
|
存储 消息中间件 缓存
从源码上聊聊Redis-String、List的结构实现
本文的数据类型只讲底层结构和部分机制,不讲具体的使用,使用的话自行bing,但是会提一些应用场景
173 1
从源码上聊聊Redis-String、List的结构实现
|
存储 NoSQL Redis
RedisTemplate五种类型常用方法总结
RedisTemplate五种类型常用方法总结
387 0
String.split()最详细源码解读及注意事项
String.split()最详细源码解读及注意事项
102 0
String.split()最详细源码解读及注意事项
|
Docker 容器
允许PUT等方法
允许PUT等方法
230 0
|
网络架构
CodeIgniter报错: You must use the "set" method to update an entry
I'm using codeigniter/datamapper to develop an inviocing application and I'm getting an error that i don't understand.
2144 0