Redis pipeline在java中的运用
2015-07-05 15:15
561 查看
我们可以利用pipeline的方式从client打包多条命令一起发出,不需要等待单条命令的响应返回,而redis服务端会处理完多条命令后会将多条命令的处理结果打包到一起返回给客户端。
通过pipeline方式当有大批量的操作时候。我们可以节省很多原来浪费在网络延迟的时间。需要注意到是用 pipeline方式打包命令发送,redis必须在处理完所有命令前先缓存起所有命令的处理结果。打包的命令越多,缓存消耗内存也越多。所以并是不是打包的命令越多越好。具体代码如下:
通过pipeline方式当有大批量的操作时候。我们可以节省很多原来浪费在网络延迟的时间。需要注意到是用 pipeline方式打包命令发送,redis必须在处理完所有命令前先缓存起所有命令的处理结果。打包的命令越多,缓存消耗内存也越多。所以并是不是打包的命令越多越好。具体代码如下:
package com.jd.redis.client; import redis.clients.jedis.Jedis; import redis.clients.jedis.Pipeline; publicclass PipelineTest { /** * @param args */ publicstaticvoid main(String[] args) { int count = 1000; long start = System.currentTimeMillis(); withoutPipeline(count); long end = System.currentTimeMillis(); System.out.println("withoutPipeline: " + (end-start)); start = System.currentTimeMillis(); usePipeline(count); end = System.currentTimeMillis(); System.out.println("usePipeline: " + (end-start)); } privatestaticvoid withoutPipeline(int count){ Jedis jr = null; try { jr = new Jedis("10.10.224.44", 6379); for(int i =0; i<count; i++){ jr.incr("testKey1"); } } catch (Exception e) { e.printStackTrace(); } finally{ if(jr!=null){ jr.disconnect(); } } } privatestaticvoid usePipeline(int count){ Jedis jr = null; try { jr = new Jedis("10.10.224.44", 6379); Pipeline pl = jr.pipelined(); for(int i =0; i<count; i++){ pl.incr("testKey2"); } pl.sync(); } catch (Exception e) { e.printStackTrace(); } finally{ if(jr!=null){ jr.disconnect(); } } } }
相关文章推荐
- .NET 下第一次接触Redis数据库
- redis源码分析实践
- redis主动向页面push数据
- redis主动向页面push数据
- Redis RDB文件结构
- tomcat redis session 共享
- Redis Mac 安装及简单命令使用
- installing the 64-bit version of the Microsoft Access Database Engine 2010 redistributable on a syst
- 基于nginx tomcat redis分布式web应用的session共享配置
- centos 6.3 & redis install
- Redis本地环境搭建
- Redis配置文件详解
- Redis基本操作-20150608
- Redis操作命令
- 豌豆夹Redis解决方案Codis源码剖析:Proxy代理
- 豆瓣Redis解决方案Codis源码剖析:Proxy代理
- 缓存框架——Redis(一)
- 缓存框架——Redis(一)
- Redis
- Redis源代码分析(23)--- CRC循环冗余算法RAND随机数的算法