Redis Pipeline 流水线操作
redis命令执行流程为:发送命令,命令排队,命令执行,返回结果。
从发送命令到返回结果,一次耗时为往返时间RTT
redis少部分指令支持批量操作,大部分不支持,N次执行指令,耗时N次RTT。长距离传输延时效果会更明显,这就与redis高并发吞吐特性违背。
Pipeline操作,将一组redis操作指令进行组装,通过一次RTT传输给Redis,在将执行结果顺序返回。
-
简单的Pipeline操作示例
构建一个Pipeline对象,将删除对象key依次放入Pipeline对象。 pipeline.sync()执行。
public static void main(String[] args) { Jedis jedis = new Jedis("host"); Pipeline pipeline = jedis.pipelined(); List<String> list = new ArrayList<>(); for (String key : list) { pipeline.del(key); } try { pipeline.sync(); } catch (Exception e) { e.printStackTrace(); } finally { jedis.close(); } }
Redis简单事务
redis简单事务,不支持事务回滚,事务执行时出现命令错误,Redis事务中的所有指令将不进行执行。
redis事务中的指令执行后,运行时出现运行错误,即指令正确,业务不对,事务会正常执行完毕,出现的数据错误,需人工调整。