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

潍坊 营销型网站建设游戏设计师网站有哪些

潍坊 营销型网站建设,游戏设计师网站有哪些,杭州市招投标交易中心,广宗网站建设jedis是一个著名的key-value存储系统#xff0c;而作为其官方推荐的java版客户端jedis也非常强大和稳定#xff0c;支持事务、管道及有jedis自身实现的分布式。在这里对jedis关于事务、管道和分布式的调用方式做一个简单的介绍和对比#xff1a;一、普通同步方式最简单和基础…jedis是一个著名的key-value存储系统而作为其官方推荐的java版客户端jedis也非常强大和稳定支持事务、管道及有jedis自身实现的分布式。在这里对jedis关于事务、管道和分布式的调用方式做一个简单的介绍和对比一、普通同步方式最简单和基础的调用方式Testpublic 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的命令。看下面例子Testpublic 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);}List 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)有时我们需要采用异步方式一次发送多个指令不同步等待其返回结果。这样可以取得非常好的执行效率。这就是管道调用方法如下Testpublic 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);}List results pipeline.syncAndReturnAll();long end System.currentTimeMillis();System.out.println(Pipelined SET: ((end - start)/1000.0) seconds);jedis.disconnect();}四、管道中调用事务就Jedis提供的方法而言是可以做到在管道中使用事务其代码如下Testpublic 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();List results pipeline.syncAndReturnAll();long end System.currentTimeMillis();System.out.println(Pipelined transaction: ((end - start)/1000.0) seconds);jedis.disconnect();}但是经测试(见本文后续部分)发现其效率和单独使用事务差不多甚至还略微差点。五、分布式直连同步调用Testpublic void test5shardNormal() {List 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([email protected] SET: ((end - start)/1000.0) seconds);sharding.disconnect();}这个是分布式直接连接并且是同步调用每步执行都返回执行结果。类似地还有异步管道调用。六、分布式直连异步调用Testpublic void test6shardpipelined() {List 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);}List results pipeline.syncAndReturnAll();long end System.currentTimeMillis();System.out.println([email protected] SET: ((end - start)/1000.0) seconds);sharding.disconnect();}七、分布式连接池同步调用如果你的分布式调用代码是运行在线程中那么上面两个直连调用方式就不合适了因为直连方式是非线程安全的这个时候你就必须选择连接池调用。Testpublic void test7shardSimplePool() {List 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([email protected] SET: ((end - start)/1000.0) seconds);pool.destroy();}上面是同步方式当然还有异步方式。八、分布式连接池异步调用Testpublic void test8shardPipelinedPool() {List 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);}List results pipeline.syncAndReturnAll();long end System.currentTimeMillis();pool.returnResource(one);System.out.println([email protected] SET: ((end - start)/1000.0) seconds);pool.destroy();}九、需要注意的地方事务和管道都是异步模式。在事务和管道中不能同步查询结果。比如下面两个调用都是不允许的Transaction tx jedis.multi();for (int i 0; i 100000; i) {tx.set(t i, t i);}System.out.println(tx.get(t1000).get());  //不允许List 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()); //不允许List results pipeline.syncAndReturnAll();事务和管道都是异步的个人感觉在管道中再进行事务调用没有必要不如直接进行事务模式。分布式中连接池的性能比直连的性能略好(见后续测试部分)。分布式调用中不支持事务。因为事务是在服务器端实现而在分布式中每批次的调用对象都可能访问不同的机器所以没法进行事务。十、测试运行上面的代码进行测试其结果如下Simple SET: 5.227 secondsTransaction SET: 0.5 secondsPipelined SET: 0.353 secondsPipelined transaction: 0.509 seconds[email protected] SET: 5.289 seconds[email protected] SET: 0.348 seconds[email protected] SET: 5.039 seconds[email protected] SET: 0.401 seconds另外经测试分布式中用到的机器越多调用会越慢。上面是2片下面是5片[email protected] SET: 5.494 seconds[email protected] SET: 0.51 seconds[email protected] SET: 5.223 seconds[email protected] SET: 0.518 seconds下面是10片[email protected] SET: 5.9 seconds[email protected] SET: 0.794 seconds[email protected] SET: 5.624 seconds[email protected] SET: 0.762 seconds下面是100片[email protected] SET: 14.055 seconds[email protected] SET: 8.185 seconds[email protected] SET: 13.29 seconds[email protected] SET: 7.767 seconds分布式中连接池方式调用不但线程安全外根据上面的测试数据也可以看出连接池比直连的效率更好。十一、完整的测试代码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;BeforeClasspublic static void setUpBeforeClass() throws Exception {List 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);}AfterClasspublic static void tearDownAfterClass() throws Exception {jedis.disconnect();sharding.disconnect();pool.destroy();}Testpublic 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);}Testpublic 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());List results tx.exec();long end System.currentTimeMillis();System.out.println(Transaction SET: ((end - start)/1000.0) seconds);}Testpublic 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());List results pipeline.syncAndReturnAll();long end System.currentTimeMillis();System.out.println(Pipelined SET: ((end - start)/1000.0) seconds);}Testpublic 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();List results pipeline.syncAndReturnAll();long end System.currentTimeMillis();System.out.println(Pipelined transaction: ((end - start)/1000.0) seconds);}Testpublic 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([email protected] SET: ((end - start)/1000.0) seconds);}Testpublic void test6shardpipelined() {ShardedJedisPipeline pipeline sharding.pipelined();long start System.currentTimeMillis();for (int i 0; i 100000; i) {pipeline.set(sp i, p i);}List results pipeline.syncAndReturnAll();long end System.currentTimeMillis();System.out.println([email protected] SET: ((end - start)/1000.0) seconds);}Testpublic 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([email protected] SET: ((end - start)/1000.0) seconds);}Testpublic 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);}List results pipeline.syncAndReturnAll();long end System.currentTimeMillis();pool.returnResource(one);System.out.println([email protected] SET: ((end - start)/1000.0) seconds);}}转载请注明来源网站:www.itxm.cn谢谢分享到
http://www.pierceye.com/news/626946/

相关文章:

  • 用花生棒做网站快吗大型网站开发合同
  • 网站建设什么原因最主要wordpress mu安装
  • 龙岗网站设计公司价格wordpress商品属性选择
  • 企业网站如何优化足球比方类网站开发
  • 大型网站开发 优帮云公司制度建设的意义
  • 收录网站工具沈阳高端网站定制
  • 做网站哪家比较好网站网页翻页设计
  • 湖州建设网站制作手机网站登录模板
  • 重庆网站制作技术wordpress获取特定尺寸特征图像
  • 展示型网站建设标准网络组建视频
  • 怎么用wordpress建手机网站网络管理网站策划书
  • 网站空间位置河南郑州百姓网
  • 云服务器可以用来做网站么网站建设短期培训
  • 做网站的费属于什么费用昆山智能网站开发
  • 西安网站制作南昌公司企业微信app下载安装官方版
  • 网站建设情况总结个人静态网页学生作业
  • 手机网站一键分享到微信asp.net ftp发布网站
  • 重庆网站制作公司妇联加强网站平台建设
  • php mysql网站开发全程实例.pdf网站的视频怎么下载
  • 海南医院网站建设软件工程公司排名
  • 微信公众号怎么分享wordpress网站优化搜索
  • 永定门网站建设佛山网红打卡景点大全排名榜
  • 网站建设模板推广重庆网络问政平台华龙网
  • 今科云平台网站建设技术中国电力建设股份部官方网站
  • 门户网站的三大基本特征vs2017做的网站如何发布
  • 怎么样自己做网站接订单网站建设和的注意事项
  • 月付商城网站建站男装商城网站建设
  • 建网站的步骤及方法php做的网站怎么运行
  • 英德市住房和城乡建设局手机网站html5手机网站模板下载
  • 网站建设手机建设网站 系统占用空间