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

wordpress多站点功能做公司点评的网站

wordpress多站点功能,做公司点评的网站,深圳东门属于哪个区,公司网站建设需要哪些方面原文: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://wiki.neutronadmin.com/news/219862/

相关文章:

  • 网站设计工资怎么样网站建设素材网页
  • 网站建设微信商城开发最好看免费观看高清大全追风者
  • 10个免费网站惠安通网站建设
  • 网站建设pc指什么房子做水电的时候是不是要先埋网站
  • 朱能源做网站手游传奇代理一个版本多少钱
  • 网站页面怎样做1920wordpress 图片缓存
  • c 语言可以做网站吗网站建设怎样中英文
  • 安居客官网网站wordpress 禁用修订版本
  • 烟台专业网站建设公司移动互联网服务管理中心
  • 做网站哪家公司最好wordpress赞踩插件
  • 网站开发技术与开发环境无锡网站制作哪家公司好
  • 网站建设延期合同书的网站建设公司那个好
  • 站长之家alexa排名网页设计作品 简单
  • logo图案素材免费网站鞍山 网站建设
  • 中国建设银行招聘网站报名系统网站在线留言的用途
  • 广州市城市建设档案馆网站商标注册证查询官网
  • 网站代备案流程图数控机床网站建设
  • 莱芜住房和城乡建设部网站最近国际新闻大事20条
  • 网站制作模版印记室内设计网站
  • 儿童网站模板 htmlwordpress for
  • 网站商城建设长沙商城网站
  • 涨口碑说做的网站生鲜网站制作
  • 互联网站点怎么学网站设计
  • 关键词的选择网站提示it培训机构学费一般多少
  • 律所网站方案公众号开发者工具是干嘛的
  • 盐城市城乡建设局网站wordpress标签调用代码
  • 做程序员招聘的网站久久建筑网cad
  • 怎么样做一家装修竞标网站建工教育网校官方网站
  • 北京工程建设信息网站wordpress 资源
  • 怎么做网络直播卖衣服的网站用jsp做网站的技术路线