redis之pipeline使用
Posted 何其有静
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis之pipeline使用相关的知识,希望对你有一定的参考价值。
redis之pipeline
我们要完成一个业务,可能会对redis做连续的多个操作,这有很多个步骤是需要依次连续执行的。这样的场景,网络传输的耗时将是限制redis处理量的主要瓶颈。
那么此时就可以引入pipeline了,pipeline管道就是解决执行大量命令时、会产生大量同学次数而导致延迟的技术。
其实原理很简单,pipeline就是把所有的命令一次发过去,避免频繁的发送、接收带来的网络开销,redis在打包接收到一堆命令后,依次执行,然后把结果再打包返回给客户端。
1 public String tsetRedis(){ 2 Long time = System.currentTimeMillis(); 3 for (int i = 0; i < 10000; i++) { 4 stringRedisTemplate.opsForValue().set("yi" + i, "wo" + i); 5 } 6 Long time1 = System.currentTimeMillis(); 7 System.out.println("耗时:" + (time1 - time)); 8 long time4 = System.currentTimeMillis(); 9 stringRedisTemplate.executePipelined(new SessionCallback<Object>() { 10 @Override 11 public <K, V> Object execute(RedisOperations<K, V> redisOperations) throws DataAccessException { 12 for (int i = 0; i < 10000; i++) { 13 stringRedisTemplate.opsForValue().set("qiang" + i, "wo" + i); 14 } 15 return null; //RedisTemplate执行executePipelined方法是有返回值的 16 } 17 }); 18 Long time2 = System.currentTimeMillis(); 19 System.out.println("耗时:" + (time2 - time4)); 20 return "redis正常耗时:" + (time1 - time) + "<br/>" + "redis管道耗时:" + (time2 - time4); 21 }
结果:
redis正常耗时:423ms
redis管道耗时:40ms
可见,采用管道速度比一般的快十倍。
以上是关于redis之pipeline使用的主要内容,如果未能解决你的问题,请参考以下文章
redis大幅性能提升之使用管道(PipeLine)和批量(Batch)操作
Redis主从与哨兵架构详解 Redis主从架构 如何在同一台机器搭建主从架构 Redis主从工作原理 数据部分复制 Jedis使用 Redis的管道(Pipeline) Redis Lua脚本(代码