做的网站需要什么技术支持中山网站建设文化咨询

news/2025/10/1 10:04:47/文章来源:
做的网站需要什么技术支持,中山网站建设文化咨询,第一次跑业务怎么找客户,优化大师班级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.mzph.cn/news/923732.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站不备案能解析吗福州市做网站公司

之前有一个公司案例,是这样的: 公司名称:智慧科技有限公司 背景: 智慧科技有限公司是一家拥有数百名员工的中型企业,随着业务的快速发展,公司面临着网络管理上的挑战。 员工在日常工作中需要频繁地访问…

凯里网站制作做网站后期为什么续费

戳蓝字“CSDN云计算”关注我们哦!作者 | 张蓝予编辑 | 苏琦6月27日晚间,范冰冰李晨宣布分手,瞬间亿级的访问量,让微博再一次“崩溃”:范冰冰账号评论区无法加载,搜索“范冰冰李晨”显示失败。微博曾经夸下海…

从零开始学神经网络——CNN(卷积神经网络) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做视频点播网站如何赚钱东莞微信网站开发

学习了python基本数据类型,附学习笔记图及操作图 转载于:https://www.cnblogs.com/bgd140206127/p/6549229.html

营销导向企业网站策划wordpress 文章长度

项目应用场景 人体姿态估计是关于图像或视频中人体关节的 2D 或 3D 定位。一般来说,这个过程可以分为两个部分:(1) 2D 视频中的 2D 关键点检测;(2) 根据 2D 关键点进行 3D 位姿估计。这个项目使用 Detectron2 从任意的 2D 视频中检测 2D 关节…

公司网站建设公哈尔滨市住房和城乡建设局局网站

MiniGPT4系列之一部署篇:在RTX-3090 Ubuntu服务器部署步骤详解_seaside2003的博客-CSDN博客 MiniGPT4系列之二推理篇命令行方式:在RTX-3090 Ubuntu服务器推理详解_seaside2003的博客-CSDN博客 MiniGPT4系列之三模型推理 (Web UI):在RTX-309…

肇庆市企业网站建设品牌乐清市龙翔网络工程公司

目录 1. 引言 2. 人工智能的历史背景 3. 深度学习的崛起 3.1 深度神经网络的基本原理 4. 计算机视觉的发展现状 4.1 传统计算机视觉与深度学习的结合 5. 深度学习在计算机视觉中的应用 5.1 图像分类 5.2 目标检测 6. 深度学习引领的未来科技创新与变革 7. 结论 引言…

303、杂诗

303、杂诗303、杂诗 唐●无名氏 近寒食雨草萋萋,著麦苗风柳映堤。 等是有家归未得,杜鹃休向耳边啼。【现代诗意译】 临近寒食节 春雨绵绵 春草萋萋 春风吹拂麦苗 堤岸上柳丝依依多么美好的时节! 杜鹃啊,我们都是有…

【网络安全】四、中级篇:SQL注入详解 - 实践

【网络安全】四、中级篇:SQL注入详解 - 实践2025-10-01 09:54 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

完整教程:第三方软件测试公司:【Gatling基于Scala的开源高性能负载测试工具】

完整教程:第三方软件测试公司:【Gatling基于Scala的开源高性能负载测试工具】pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fa…

重庆做seo网站优化选择哪家全国小微企业名录

点击上方“蓝字”关注我们“2020中国山东新旧动能转换高价值专利培育大赛”(简称“新高赛”)是由山东省市场监督管理局(知识产权局)主办,由山东省知识产权事业发展中心、知识产权出版社有限责任公司共同承办的以新旧动能转换高价值专利培育为主题的创新大赛。新高赛…

网站名称意义灵璧县建设局网站

你是否曾经尝试过将你的 Python 程序打包成一个可执行文件,却发现生成的文件大得惊人?别担心,本文将教你如何使用 PyInstaller 尽可能减小生成的 onefile 大小,让你的程序轻盈如风! 1. 使用虚拟环境 首先&#xff0c…

完整教程:二维凸包——Andrew 算法学习笔记

完整教程:二维凸包——Andrew 算法学习笔记pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

电脑性能优化综合指南:从网络到硬件的不全面解答

目录 网络速度篇 硬件维护篇 系统优化篇 内存管理篇 CPU优化篇 综合建议 网络速度篇 Q1: 下载速度和上传速度跟什么有关?和网页加载速度有关联吗? ​​A:​​ 下载速度和上传速度是衡量网络性能的两个关键指标:…

宁波网站推广软件哪家强网站突然打不开

下载jenkins 官方下载地址:Jenkins 的安装和设置 清华源下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/windows-stable/ 最新支持java8的版本时2.346.1版本,在清华源中找不到,在官网中没找到windows的下载历史&#xff…

深度学习中Bootstrap详解 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

设计师需要了解的网站手机百度网页版 入口

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 引言评价AI模型“好不好”及“有没有发展”开源与闭源:两种发展路径的比较开源的优势与劣势闭源的优势与劣势 开源与闭源:你更看好哪一种&#x…

莆田做网站网站页面app下载大全

Vue思维导图目录MVC与MVVM的区别Vue基本代码结构Vue指令Vue组件class和style动态绑定computed计算属性EventBusfilter过滤器方法Vue是一套构建用户界面的框架,只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。(Vue有配套的第三…

电子商务网站建设课程站长工具成品源码

出现这个问题的原因在于系统分配的“恢复分区”空间不足,该更新在安装时会失败。大致的思路是利用dispart工具收缩C盘空间,扩展该分区的空间。本人开始的“恢复分区”的空间是603MB,安装更新失败,扩充了250MB后,成功了…

深入解析:【数据结构】不带头节点单链表的基本操作

深入解析:【数据结构】不带头节点单链表的基本操作2025-10-01 09:21 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; disp…