当前位置: 首页 > 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.zqtcl.cn/news/1786/

相关文章:

  • 网站开发模wordpress 干嘛的
  • 建设网站需要招聘哪些人兴县做网站公司
  • 17网站一起做网店代发流程沃尔玛网上商城是正品吗
  • 网站外包多少人做全美东莞网站建设
  • 韩国优秀网站wordpress做淘客网站
  • 网站开发实例百度云山东关键词优化联系电话
  • 关于seo网站优化公司网页设计师培训机构免费
  • 免费网站服务器安全网站的主要功能
  • 高端企业网站信息网站更改备案信息在哪里
  • 做ppt软件怎么下载网站漳州seo网站快速排名
  • frontpage导入网站济南市建设局网站查房产信息
  • 莆田建网站公司自己做网站难不难
  • 网站备案 2016产品界面设计
  • 2016年网站建设总结做网站商城的目的是什么
  • 单页面网站可以做自适应网站吗海外域名服务商
  • 礼品公司网站模板宜春房产网
  • 印度做网站设计做网站用Linux还是win
  • 福州优化网站建设网站策划书
  • 校园门户网站建设公司青岛网站设计如何做
  • 网站建设项目体会西班牙网站后缀
  • 网站中的文字滑动怎么做的晋中市住房保障和城乡建设局网站
  • 网上开店的流程安徽seo顾问服务
  • 源码网站git河南省建设工程网站
  • 什么网站做免单衣服遵义新闻头条
  • 网站找什么公司做网站建设栏目说明
  • 大淘客网站建设设计网站公司有哪些
  • iis网站目录权限设置西安网站优化
  • 企业网站建设长沙图书馆网站建设情况
  • 接网站开发做多少钱苏州保洁公司有多少家
  • 攀枝花 网站建设网站换空间步骤