Windows下Redis最新版本高可用复制支配
本节问题如果有大量的数据,例如几万个ID,几百万个IP等等,怎么可以快速的插入到Redis数据库呢?
普通的Redis客户端实行大规模插入然而这不是一个好办法,由于每次插入命令都会产生round trip的韶光,例如我们用Wireshark来监测Redis客户端和做事端之间在插入数据时的数据来回。我们在客户端往做事端实行了2个set 的命令,分别是set key0 value0和set key1 value1;如下面截图所示,你会看到有很多数据的来回,如此类推,在大规模插入的时候,这些round trip将大幅增长,自然影响到插入数据的效率。
用shell脚本测试一下普通客户端逐条命令插入,在windows下可以用Cygwin来运行
插入1000条命令,用时比较长
Pipe-mode导入数据1.redis-cli –pipe试着尽可能快的发送数据到做事器,它在读取数据的同时并发送。
2.发送完所有数据后它就会发送一个分外的ECHO命令包含20个字符的字符串。通过这随机字符串来匹配收到的回答,匹配到了往后便是本次命令都已经完成了。
怎么利用pipe-mode模式导入数据,很大略,利用--pipe命令,如下图所示(windows下面可以利用Cygwin),导入100万的数据只须要不到一分钟的韶光
通过Wireshark可以看到本次命令数据来回的情形。
C# StackExchange.Redis批量插入数据
用CreateBatch创建一个Batch,才整体提交命令,不然每个命令去setadd是很慢的,用batch这种方法一次插入2W条命令只须要不用0.07秒的韶光
本期就聊到这里,感激,哈哈哈