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