1、利用mGet
List<String> keys = new ArrayList<>();
//初始keys
List<YourObject> list = this.redisTemplate.opsForValue().multiGet(keys);
2、利用PipeLine
List<YourObject> list = this.redisTemplate.executePipelined(new RedisCallback<YourObject>() {
@Override
public YourObject doInRedis(RedisConnection connection) throws DataAccessException {
StringRedisConnection conn = (StringRedisConnection)connection;
for (String key : keys) {
conn.get(key);
}
return null;
}
});
其实2者底层都是用到execute方法,multiGet在使用连接是没用到pipeline,一条命令直接传给Redis,Redis返回结果。而executePipelined实际上一条或多条命令,但是共用一个连接。
/**
* Executes the given action object within a connection that can be exposed or not. Additionally, the connection can
* be pipelined. Note the result
Spring RedisTemplate 批量获取值
最新推荐文章于 2024-07-16 08:17:12 发布
本文介绍了Spring RedisTemplate两种批量获取值的方法:1) 使用multiGet方法,直接将命令发送给Redis并返回结果;2) 利用PipeLine,通过共用连接执行多条命令。虽然两者都调用execute方法,但multiGet不使用pipeline,而executePipelined则开启管道。需要注意的是,查询结果与键的顺序保持一致,未找到的键对应null值。
摘要由CSDN通过智能技术生成