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

极客联盟网站建设公司怎么样wordpress 3.8.3 下载

极客联盟网站建设公司怎么样,wordpress 3.8.3 下载,呼和浩特网站建设SEO优化,中国万网注册网站原文:Redis进阶实践之十六 Redis大批量增加数据一、介绍 有时候#xff0c;Redis实例需要在很短的时间内加载大量先前存在或用户生成的数据#xff0c;以便尽可能快地创建数百万个键。这就是所谓的批量插入#xff0c;本文档的目标是提供有关如何以尽可能快的速度向…原文:Redis进阶实践之十六 Redis大批量增加数据 一、介绍          有时候Redis实例需要在很短的时间内加载大量先前存在或用户生成的数据以便尽可能快地创建数百万个键。这就是所谓的批量插入本文档的目标是提供有关如何以尽可能快的速度向Redis提供数据的信息。如果想查看英文原文地址如下https://redis.io/topics/mass-insert二、操作详解                 话不多说直接进入主题了。          1、使用协议卢克Use the protocol, Luke                 使用普通Redis客户端的方式执行批量插入的操作并不是一个很好的办法原因如下发送一个命令的方式很慢因为您必须为每个命令都会有往返的时间消耗。虽然可以使用管道模式来操作但为了批量插入多条记录您需要在读取回复的同时编写新命令以确保尽可能快地插入。                 另外只有一小部分客户端支持非阻塞 I/O 操作而且并不是所有的客户端都能够以最大化吞吐量这种有效的方式来解析这些回复。 由于以上这些原因将大量数据导入Redis的首选方式是生成包含Redis协议的文本文件原始格式以便调用插入所需数据所需的命令。                例如如果我需要生成一个大型数据集其中包含数十亿个键“keyN - ValueN”我将创建一个包含如下Redis协议格式的命令的文件 SET Key0 Value0SET Key1 Value1...SET KeyN ValueN                  一旦创建了该文件剩下的操作就是尽可能快地将其提供给Redis。在过去做法是使用如下的netcat的命令 (cat data.txt; sleep 10) | nc localhost 6379 /dev/null                 然而这并不是一个非常可靠的方式来执行批量导入因为 netcat 命令并不会真正知道所有数据何时传输完毕并且也无法检查发生的错误。在Redis的2.6或更高版本中redis-cli实用程序支持称为管道的新模式该模式就是为了执行批量插入而存在的。                使用管道模式运行的命令如下所示 cat data.txt | redis-cli --pipe                 这将产生类似于这样的输出 All data transferred. Waiting for the last reply...Last reply received from server.errors: 0, replies: 1000000                redis-cli实用程序还将确保只将从Redis实例收到的错误重定向到标准输出。         2、生成Redis协议Generating Redis Protocol                  Redis协议生成和解析非常简单如果想了解协议的详情英文原地址点击《这里》我翻译的文章的地址点击《Redis进阶实践之十七 Redis协议的规范》。然而为了生成用于大容量插入协议的目标您不需要了解协议的每个细节只需要按照以下方式书写每个命令 *argscrlf$lencrlfarg0crlfarg1crlf...argNcrlf                 其中cr表示“\r”或ASCII字符13lf表示“\n”或ASCII字符10。                例如命令 SET key value 由以下协议表示 *3crlf$3crlfSETcrlf$3crlfkeycrlf$5crlfvaluecrlf               或者表示为引用的字符串 *3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n              为批量插入而生成的文件只不过是由以上述方式表示的一个接一个的命令组成的。             以下Ruby函数生成有效的协议 def gen_redis_proto(*cmd)proto proto *cmd.length.to_s\r\ncmd.each{|arg|proto $arg.to_s.bytesize.to_s\r\nproto arg.to_s\r\n}protoendputs gen_redis_proto(SET,mykey,Hello World!).inspect              使用上述功能可以使用此程序轻松生成上例中的键值对 (0...1000).each{|n|STDOUT.write(gen_redis_proto(SET,Key#{n},Value#{n}))}               我们可以在redis-cli的管道中直接运行程序以执行我们的第一次海量导入会话。 $ ruby proto.rb | redis-cli -h 192.168.127.130 -p 6379 --pipeAll data transferred. Waiting for the last reply...Last reply received from server.errors: 0, replies: 1000         3、管道模式如何在引擎下工作How the pipe mode works under the hoods                 redis-cli管道模式的速度和netcat一样快与此同时仍然能够明白服务器最后一次发送回复的时间。                 这是通过以下方式获得的                  3.1、redis-cli --pipe Redis客户端会尽可能快的向服务器发送数据。                  3.2、同时会尽可能快的读取并解析数据文件中的内容。                  3.3、一旦从标准输入设备读取数据完毕它将会发送一个带有20个字节的字符串的特殊的ECHO命令到服务器我们确信这是最新发送的命令如果我们收到作为批量回复的相同的20个字节的消息我们确信可以做“答复匹配检查”。                  3.4、这个特殊的最终命令一经发送Redis服务器端将接收到回复和这20个字节的回复消息做匹配。如果匹配它可以成功退出表示插入完毕。               使用这个技巧我们不需要解析我们发送给服务器的协议以了解我们发送了多少条命令仅仅是一个答复而已。               但是在解析回复时我们会对所有解析的回复进行计数以便在最后我们能够告诉用户传输到服务器的命令的数量在这次批量插入的会话中。     4、示例代码操作           4.1、准备数据文件格式是文本文件名称是redis_commands.txt。                   我在Windows环境下生成了一个txt文件一条数据一行代码如下 SET Key0 Value0SET Key1 Value1SET Key2 Value2SET Key3 Value3SET Key4 Value4SET Key5 Value5SET Key6 Value6SET Key7 Value7SET Key8 Value8SET Key9 Value9SET Key10 Value10...SET KeyN ValueN                    我生成了500万的数据因为这个文本文件我是在Windows环境下生成的所以需要格式转换。          4.2、如果使用Windows环境下生成的文件需要进行格式转换如果是在Linux环境下生成的文件就不需要格式转换如果文本文件比较大执行转换时间会有几秒等待即可。                  执行格式转换 [rootlinux ~]# unix2dos redis_commands.txtunix2dos:converting file redis_commands.txt to DOS format ...                   以上代码进行格式转换完毕                  需要说明一点unix2dos这个命令需要先安装如果没有安装会提示command not found。                  执行以下命令安装 [rootlinux ~]# yum install unix2dos            4.3、进行数据批量插入 [rootlinux ~]# cat redis_commands.txt | redis-cli -h 192.168.127.130 -p 6379 [-a password] -n 0 --pipeAll data transferred.Waiting for the last reply...Last reply received from server.errors:0replies10000000                   批量插入数据成功一千万的数据大概要花费50几秒左右。三、总结           好的今天就写到这里大批量数据插入的就是这么容易。只要理解了其实也不是很难技术就是一层窗户纸一捅就破但是没人捅就比较麻烦。下一篇文章我们将写一些关于redis协议格式的文章如果要涉及大批量数据插入就会涉及到redis规范协议的问题。
http://www.pierceye.com/news/60078/

相关文章:

  • 诸暨网站制作公司 网页帮你做决定的网站
  • 番禺网站建设电子商务网站建设与维护总结
  • 山西城乡和住房建设厅网站seo推广具体做什么
  • 广州知名网站建设哪家好网站建设公司选哪个好
  • 做小说网站做国外域名还是国内的好中国企业500强2018
  • 河南省漯河建设局网站免费空间最大的云盘
  • 沈阳网站建设找思路装修公司哪家好兰州的
  • 登烈建站wordpress后台登陆地址修改
  • 公司做网站做什么类型的网站好dedecms建手机网站流程
  • 做网站常用的英文字体雕刻机做外贸都是哪些网站
  • 网站开发人员的职业要求彩票网站开发违法
  • 如何搭建网站建设环境广州seo公司排行
  • 铜陵网站建设wordpress能做商城
  • 做平面设计素材的哪个网站好枣强网址建站
  • 小企业网站建设平台有限责任公司公司章程范本
  • 做微网站需要域名吗做机械的有什么网站
  • 扶余市建设局网站网站制作方案垂直领域获客
  • 营销型网站能解决什么问题长春网站建设专业公司
  • 广州哪里有学做网站的wordpress 热门头条
  • 企业网站软件开发东莞网站优化是什么
  • 江门网站建设报价自建房平面图设计软件
  • 天津网站建设服务电话网站关键词多少个字数 站长网
  • 县级林业网站建设管理美康优选网站怎么做的
  • 网站建设多少钱合适自己想学做博客网站
  • 建设网站需要的工具企业网站设计报名
  • 网站开发使用的框架抗疫物资捐赠网
  • 站长之家html模板wordpress 编辑器添加自定义按钮
  • 上海企业建设网站网站建设整体流程
  • 成都网站优化方法深圳松岗 网站建设
  • 宜昌 医院 网站建设网站表格布局