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
目录
相关文章
|
1月前
|
存储 C++ 容器
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
30 3
【C++】map、set基本用法
|
6月前
|
NoSQL 定位技术 Redis
RedisTemplate.opsForGeo()用法简介并举例
RedisTemplate.opsForGeo()用法简介并举例
336 3
|
6月前
|
NoSQL Redis
RedisTemplate.opsForZSet()用法简介并举例
RedisTemplate.opsForZSet()用法简介并举例
925 3
|
6月前
|
算法 NoSQL Redis
RedisTemplate.opsForHyperLogLog()用法简介并举例
RedisTemplate.opsForHyperLogLog()用法简介并举例
146 2
|
6月前
|
NoSQL Redis
RedisTemplate.opsForStream()用法简介并举例
RedisTemplate.opsForStream()用法简介并举例
401 2
|
6月前
|
NoSQL Redis
RedisTemplate.opsForSet()用法简介并举例
RedisTemplate.opsForSet()用法简介并举例
604 2
|
6月前
|
NoSQL Redis 索引
RedisTemplate.opsForList()用法简介并举例
RedisTemplate.opsForList()用法简介并举例
1665 2
|
6月前
|
NoSQL Redis
RedisTemplate.opsForHash()用法简介并举例
RedisTemplate.opsForHash()用法简介并举例
776 1
|
6月前
|
NoSQL Redis
RedisTemplate.opsForValue()用法简介并举例
RedisTemplate.opsForValue()用法简介并举例
665 1
|
7月前
|
NoSQL Java Redis
redis-学习笔记(string , hash , list , set , zset 前置知识)
redis-学习笔记(string , hash , list , set , zset 前置知识)
39 0
redis-学习笔记(string , hash , list , set , zset 前置知识)