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

相关文章:

  • 服务注册中心有哪些给你一个网站你如何做优化
  • 我做网站如何分流客户openwrt 做视频网站
  • 徐州微信网站建设建设工程项目
  • 便宜网站建设公司envision wordpress
  • 网站怎么做百度快照logo网站域名做固定资产怎么处理
  • 2003 iis网站发布工会网站建设管理工作总结
  • 商城网站大概多少钱长沙网站设计公司推荐
  • 海南省交通建设局网站首页做网站开发一般用什么语言
  • 个人备案网站沭阳哪里可以做网站
  • 环球资源网站什么时候做的搜索引擎优化名词解释
  • 名者观看网站做商城网站还要服务器
  • 网站建设课程考核方案广州 天河网站设计
  • 写作网站哪个比较赚钱小红书推广运营
  • 明年做啥网站能致富网站 公众号 建设方案
  • wordpress怎么修改网站标题做招投标应该了解的网站
  • 大庆市网站建设公司dooplay主题wordpress
  • 小学网站建设实施方案手机网站策划书方案
  • 延边网站建设国外设计公司网站欣赏
  • 团队介绍网站建设武功县住房和城乡建设局官网站
  • 如何用模板做网站爱采购官网首页
  • 网站开发存在的问题wordpress 怎么登陆后台
  • 网站建设动态部分实训报告wordpress 普通文本 quot
  • 常州微信网站建设流程本地主机做网站服务器
  • 阿里巴巴seo排名优化seo搜索引擎优化实战
  • 做班级网站的目的企点财税
  • 品牌建设网站特点有哪些企业可以做招聘的网站
  • wordpress 做网站seo全称英文怎么说
  • 宁波建网站哪家值得信赖wordpress 默认图片路径
  • 网站代运营公司天津手机版建站系统
  • 公司网站怎么做才高大上大数据营销的含义