java spring redis SessionCallback RedisCallback多条命令一起执行
作者:bin我们知道,例如下面这样2条命令,实际上会分别前后开启2个不同的链接去设置值
redisTemplate.opsForValue().set("key1", "value1");
redisTemplate.opsForValue().set("key2", "value2");
为了在一个redis链接中执行2条以上的命令,我们可以使用 SessionCallback 或者 RedisCallback
首先说SessionCallback,他比后者封装的更友好,实际开发中应当优先选择他:
redisTemplate.execute(new SessionCallback(){
@Override
public Object execute(RedisOperation ro) throw DataAccessException{
ro,opsForValue().set("key1", "value1");
ro,opsForValue().put("hash", "field", "hvalue1");
return null;
}
});
其次是RedisCallback,他更加底层,需要处理的内容也更多,可读性也更差
redisTemplate.execute(new RedisCallback() {
@Override
public Object doInRedis(RedisConnection rc) throw DataAccessException{
rc.set("key1".getBytes(), "value1".getBytes());
rc.hSet("hash".getBytes(), "field".getBytes(), "hvalue1".getBytest());
return null
}
});