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
  }
});