当前位置: 首页 > news >正文

安国手机网站设计3一6年级科技小制作手工

安国手机网站设计,3一6年级科技小制作手工,手机网页设计尺寸,网站客户端制作多少钱一、普通同步方式二、事务方式(Transactions)三、管道(Pipelining)四、管道中调用事务五、分布式直连同步调用六、分布式直连异步调用七、分布式连接池同步调用八、分布式连接池异步调用九、需要注意的地方十、测试十一、完整的测试代码jedis是一个著名的key-value存储系统而作为其官方推荐的java版客户端jedis也非常强大和稳定支持事务、管道及有jedis自身实现的分布式。 在这里对jedis关于事务、管道和分布式的调用方式做一个简单的介绍和对比 一、普通同步方式 最简单和基础的调用方式 ? 1 2 3 4 5 6 7 8 9 10 11 Test public void test1Normal() {     Jedis jedis  new Jedis(localhost);     long start  System.currentTimeMillis();     for (int i  0; i  100000; i) {         String result  jedis.set(n  i, n  i);     }     long end  System.currentTimeMillis();     System.out.println(Simple SET:   ((end - start)/1000.0)   seconds);     jedis.disconnect(); } 很简单吧每次set之后都可以返回结果标记是否成功。 二、事务方式(Transactions) redis的事务很简单他主要目的是保障一个client发起的事务中的命令可以连续的执行而中间不会插入其他client的命令。 看下面例子 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 Test public void test2Trans() {     Jedis jedis  new Jedis(localhost);     long start  System.currentTimeMillis();     Transaction tx  jedis.multi();     for (int i  0; i  100000; i) {         tx.set(t  i, t  i);     }     ListObject results  tx.exec();     long end  System.currentTimeMillis();     System.out.println(Transaction SET:   ((end - start)/1000.0)   seconds);     jedis.disconnect(); } 我们调用jedis.watch(…)方法来监控key如果调用后key值发生变化则整个事务会执行失败。另外事务中某个操作失败并不会回滚其他操作。这一点需要注意。还有我们可以使用discard()方法来取消事务。 三、管道(Pipelining) 有时我们需要采用异步方式一次发送多个指令不同步等待其返回结果。这样可以取得非常好的执行效率。这就是管道调用方法如下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 Test public void test3Pipelined() {     Jedis jedis  new Jedis(localhost);     Pipeline pipeline  jedis.pipelined();     long start  System.currentTimeMillis();     for (int i  0; i  100000; i) {         pipeline.set(p  i, p  i);     }     ListObject results  pipeline.syncAndReturnAll();     long end  System.currentTimeMillis();     System.out.println(Pipelined SET:   ((end - start)/1000.0)   seconds);     jedis.disconnect(); } 四、管道中调用事务 就Jedis提供的方法而言是可以做到在管道中使用事务其代码如下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Test public void test4combPipelineTrans() {     jedis  new Jedis(localhost);      long start  System.currentTimeMillis();     Pipeline pipeline  jedis.pipelined();     pipeline.multi();     for (int i  0; i  100000; i) {         pipeline.set(  i,   i);     }     pipeline.exec();     ListObject results  pipeline.syncAndReturnAll();     long end  System.currentTimeMillis();     System.out.println(Pipelined transaction:   ((end - start)/1000.0)   seconds);     jedis.disconnect(); } 但是经测试见本文后续部分发现其效率和单独使用事务差不多甚至还略微差点。 五、分布式直连同步调用 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Test public void test5shardNormal() {     ListJedisShardInfo shards  Arrays.asList(             new JedisShardInfo(localhost,6379),             new JedisShardInfo(localhost,6380));     ShardedJedis sharding  new ShardedJedis(shards);     long start  System.currentTimeMillis();     for (int i  0; i  100000; i) {         String result  sharding.set(sn  i, n  i);     }     long end  System.currentTimeMillis();     System.out.println(SimpleSharing SET:   ((end - start)/1000.0)   seconds);     sharding.disconnect(); } 这个是分布式直接连接并且是同步调用每步执行都返回执行结果。类似地还有异步管道调用。 六、分布式直连异步调用 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Test public void test6shardpipelined() {     ListJedisShardInfo shards  Arrays.asList(             new JedisShardInfo(localhost,6379),             new JedisShardInfo(localhost,6380));     ShardedJedis sharding  new ShardedJedis(shards);     ShardedJedisPipeline pipeline  sharding.pipelined();     long start  System.currentTimeMillis();     for (int i  0; i  100000; i) {         pipeline.set(sp  i, p  i);     }     ListObject results  pipeline.syncAndReturnAll();     long end  System.currentTimeMillis();     System.out.println(PipelinedSharing SET:   ((end - start)/1000.0)   seconds);     sharding.disconnect(); } 七、分布式连接池同步调用 如果你的分布式调用代码是运行在线程中那么上面两个直连调用方式就不合适了因为直连方式是非线程安全的这个时候你就必须选择连接池调用。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Test public void test7shardSimplePool() {     ListJedisShardInfo shards  Arrays.asList(             new JedisShardInfo(localhost,6379),             new JedisShardInfo(localhost,6380));     ShardedJedisPool pool  new ShardedJedisPool(new JedisPoolConfig(), shards);     ShardedJedis one  pool.getResource();     long start  System.currentTimeMillis();     for (int i  0; i  100000; i) {         String result  one.set(spn  i, n  i);     }     long end  System.currentTimeMillis();     pool.returnResource(one);     System.out.println(SimplePool SET:   ((end - start)/1000.0)   seconds);     pool.destroy(); } 上面是同步方式当然还有异步方式。 八、分布式连接池异步调用 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Test public void test8shardPipelinedPool() {     ListJedisShardInfo shards  Arrays.asList(             new JedisShardInfo(localhost,6379),             new JedisShardInfo(localhost,6380));     ShardedJedisPool pool  new ShardedJedisPool(new JedisPoolConfig(), shards);     ShardedJedis one  pool.getResource();     ShardedJedisPipeline pipeline  one.pipelined();     long start  System.currentTimeMillis();     for (int i  0; i  100000; i) {         pipeline.set(sppn  i, n  i);     }     ListObject results  pipeline.syncAndReturnAll();     long end  System.currentTimeMillis();     pool.returnResource(one);     System.out.println(PipelinedPool SET:   ((end - start)/1000.0)   seconds);     pool.destroy(); } 九、需要注意的地方 事务和管道都是异步模式。在事务和管道中不能同步查询结果。比如下面两个调用都是不允许的 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  Transaction tx  jedis.multi();  for (int i  0; i  100000; i) {      tx.set(t  i, t  i);  }  System.out.println(tx.get(t1000).get());  //不允许  ListObject results  tx.exec();  …  …  Pipeline pipeline  jedis.pipelined();  long start  System.currentTimeMillis();  for (int i  0; i  100000; i) {      pipeline.set(p  i, p  i);  }  System.out.println(pipeline.get(p1000).get()); //不允许  ListObject results  pipeline.syncAndReturnAll(); 事务和管道都是异步的个人感觉在管道中再进行事务调用没有必要不如直接进行事务模式。 分布式中连接池的性能比直连的性能略好(见后续测试部分)。 分布式调用中不支持事务。 因为事务是在服务器端实现而在分布式中每批次的调用对象都可能访问不同的机器所以没法进行事务。 十、测试 运行上面的代码进行测试其结果如下 ? 1 2 3 4 5 6 7 8 9 10 11 Simple SET: 5.227 seconds Transaction SET: 0.5 seconds Pipelined SET: 0.353 seconds Pipelined transaction: 0.509 seconds SimpleSharing SET: 5.289 seconds PipelinedSharing SET: 0.348 seconds SimplePool SET: 5.039 seconds PipelinedPool SET: 0.401 seconds 另外经测试分布式中用到的机器越多调用会越慢。上面是2片下面是5片 ? 1 2 3 4 SimpleSharing SET: 5.494 seconds PipelinedSharing SET: 0.51 seconds SimplePool SET: 5.223 seconds PipelinedPool SET: 0.518 seconds 下面是10片 ? 1 2 3 4 SimpleSharing SET: 5.9 seconds PipelinedSharing SET: 0.794 seconds SimplePool SET: 5.624 seconds PipelinedPool SET: 0.762 seconds 下面是100片 ? 1 2 3 4 SimpleSharing SET: 14.055 seconds PipelinedSharing SET: 8.185 seconds SimplePool SET: 13.29 seconds PipelinedPool SET: 7.767 seconds 分布式中连接池方式调用不但线程安全外根据上面的测试数据也可以看出连接池比直连的效率更好。 十一、完整的测试代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 package com.example.nosqlclient; import java.util.Arrays; import java.util.List; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.JedisShardInfo; import redis.clients.jedis.Pipeline; import redis.clients.jedis.ShardedJedis; import redis.clients.jedis.ShardedJedisPipeline; import redis.clients.jedis.ShardedJedisPool; import redis.clients.jedis.Transaction; import org.junit.FixMethodOrder; import org.junit.runners.MethodSorters; FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestJedis {     private static Jedis jedis;     private static ShardedJedis sharding;     private static ShardedJedisPool pool;     BeforeClass     public static void setUpBeforeClass() throws Exception {         ListJedisShardInfo shards  Arrays.asList(                 new JedisShardInfo(localhost,6379),                 new JedisShardInfo(localhost,6379)); //使用相同的ip:port,仅作测试         jedis  new Jedis(localhost);          sharding  new ShardedJedis(shards);         pool  new ShardedJedisPool(new JedisPoolConfig(), shards);     }     AfterClass     public static void tearDownAfterClass() throws Exception {         jedis.disconnect();         sharding.disconnect();         pool.destroy();     }     Test     public void test1Normal() {         long start  System.currentTimeMillis();         for (int i  0; i  100000; i) {             String result  jedis.set(n  i, n  i);         }         long end  System.currentTimeMillis();         System.out.println(Simple SET:   ((end - start)/1000.0)   seconds);     }     Test     public void test2Trans() {         long start  System.currentTimeMillis();         Transaction tx  jedis.multi();         for (int i  0; i  100000; i) {             tx.set(t  i, t  i);         }         //System.out.println(tx.get(t1000).get());         ListObject results  tx.exec();         long end  System.currentTimeMillis();         System.out.println(Transaction SET:   ((end - start)/1000.0)   seconds);     }     Test     public void test3Pipelined() {         Pipeline pipeline  jedis.pipelined();         long start  System.currentTimeMillis();         for (int i  0; i  100000; i) {             pipeline.set(p  i, p  i);         }         //System.out.println(pipeline.get(p1000).get());         ListObject results  pipeline.syncAndReturnAll();         long end  System.currentTimeMillis();         System.out.println(Pipelined SET:   ((end - start)/1000.0)   seconds);     }     Test     public void test4combPipelineTrans() {         long start  System.currentTimeMillis();         Pipeline pipeline  jedis.pipelined();         pipeline.multi();         for (int i  0; i  100000; i) {             pipeline.set(  i,   i);         }         pipeline.exec();         ListObject results  pipeline.syncAndReturnAll();         long end  System.currentTimeMillis();         System.out.println(Pipelined transaction:   ((end - start)/1000.0)   seconds);     }     Test     public void test5shardNormal() {         long start  System.currentTimeMillis();         for (int i  0; i  100000; i) {             String result  sharding.set(sn  i, n  i);         }         long end  System.currentTimeMillis();         System.out.println(SimpleSharing SET:   ((end - start)/1000.0)   seconds);     }     Test     public void test6shardpipelined() {         ShardedJedisPipeline pipeline  sharding.pipelined();         long start  System.currentTimeMillis();         for (int i  0; i  100000; i) {             pipeline.set(sp  i, p  i);         }         ListObject results  pipeline.syncAndReturnAll();         long end  System.currentTimeMillis();         System.out.println(PipelinedSharing SET:   ((end - start)/1000.0)   seconds);     }     Test     public void test7shardSimplePool() {         ShardedJedis one  pool.getResource();         long start  System.currentTimeMillis();         for (int i  0; i  100000; i) {             String result  one.set(spn  i, n  i);         }         long end  System.currentTimeMillis();         pool.returnResource(one);         System.out.println(SimplePool SET:   ((end - start)/1000.0)   seconds);     }     Test     public void test8shardPipelinedPool() {         ShardedJedis one  pool.getResource();         ShardedJedisPipeline pipeline  one.pipelined();         long start  System.currentTimeMillis();         for (int i  0; i  100000; i) {             pipeline.set(sppn  i, n  i);         }         ListObject results  pipeline.syncAndReturnAll();         long end  System.currentTimeMillis();         pool.returnResource(one);         System.out.println(PipelinedPool SET:   ((end - start)/1000.0)   seconds);     } } 参考:http://www.open-open.com/lib/view/open1410485827242.html 转载于:https://www.cnblogs.com/songjinduo/p/5151139.html
http://www.pierceye.com/news/1786/

相关文章:

  • 公司做外贸的网站动画制作专业就业前景
  • 淘宝客做二级域名网站可以做网页的软件
  • 外贸网站怎么做重庆服装网站建设费用
  • 网约车平台app网站建设汕头网站建设系统
  • 建设微信营销网站建立网站有哪些步骤
  • 浙江网站开发工程师万柳网站建设
  • 网站极速备案公司公司手机网站制作
  • 网站手机优化显示景点网站建设
  • 怎样用自己电脑做网站广电基础设施建设官方网站
  • 黑龙江建设兵团知青网站廊坊做网站多少钱
  • 网站建设收费标准报价环境设计专业介绍
  • 贸易公司网站源码深圳前50强网站建设公司
  • 制作装饰公司网站企业网站都没的百度快照咋办
  • 自己建设的网站怎么赚钱泉州百度竞价推广
  • 通辽做网站有没有免费咨询协议
  • 光谷做网站推广价格wordpress安装好后怎么使用
  • 公司网站建设应注意jsp 网站开发教程
  • 龙岩做网站公司有哪些自己的域名搭建网站
  • 个人网站设计案例自豪地采用wordpress如何去掉
  • 外链发布网站青岛建设集团股份有限公司
  • 什么网站做简历最好久久建筑网免费下载怎么没有了
  • 书店网站网站建设规划书南通网站建设空间
  • 网络营销与直播电商就业前景关键词优化公司前十排名
  • 网站制作公司转型数据榆林网络推广
  • 卡曼科技网站建设专做电器的网站
  • 建网站的网站有哪些上海网站推广汉狮
  • 镇江市网站建设设计泰州网站建设电话
  • 在线工具网站模板网站有哪几类
  • 最新域名网站查询wordpress的icon
  • 加强网站集约化建设长沙电商网站制作