本文共 1944 字,大约阅读时间需要 6 分钟。
一觉醒来改好bug的感觉真爽,可惜周围小伙伴都睡了,不能让我欢呼雀跃一下。
本篇主要通过一个典型的K—V批量数据导入例子来总结的数据导入过程,同时穿插了一些格式化数据的处理方式。
我的项目需要将 ‘英文单词’ – ‘汉译’ 以K-V的形式保存在中,然后进行查询功能,这里就采用了Redis的批量导入功能。
如果在客户端,我们想要插入一条数据,就直接做就好
然而当遇到成千上万条呢?
我自己想到的笨方法就是写个循环呗。。。让程序自己跑。。
但是既然有更高效和简单的办法,为什么不用呢?
从Redis2.6开始,redis-cli支持使用pipe模式插入大量数据。
我们只需要将数据格式化、协议化便可以简单高效的完成批量插入。
如下,将数据处理之后保存在文件file,只需要
就完成了
我们将需要的 ‘英语单词’和‘汉译’进行一一对应,用空格分开。
内容如下
然后添加命令(其实这里可以不添加,因为直接使用SET)
我们需要将刚才的数据协议化为Redis的交互协议,因为一开始不知道,同时,在官方文档中,感觉是默认读者了解这个协议,所以并没有很详细的解释,导致我自己在这部分踩了很多坑。
我们只要知道这里的协议格式,就非常清晰该如何处理了。
在这里,我们不详细展开redis的协议格式,仅就处理本文中的例子而说明。
例子:
协议化之后
可以看到,每行的结尾都是\r\n,第一个*3表示内容一共有3行(命令+key+value),$3表示有3个字节(也就是下面的SET),然后就是命令,$8表示有8个字节(也就是下面的software),而下面是中文了,所以这里的字节数我们需要根据实际的编码去判断,所以我采用了?来表示。
而网上的一些协议化程序,往往没有对中文进行处理。。。(导致我踩了好长时间的坑),所以不如针对你自己的格式化数据写个程序处理一下。
和本文无关的一点感想
看到很多人都用处理,其实这么小的事情,你只要拿你熟练的语言快速写一个程序,能正确就好,我就是拿C写的。。。
转载地址:http://wcfob.baihongyu.com/