从零学习redis(12)--- 大量导入数据
redis 刘宇帅 6年前 阅读量: 1775
有时候我们需要在短时间内往 redis 里插入大量的数据,我们如果单条单条的出入会浪费很多时间和服务器资源,我们可以使用管道来实现快速的插入。
netcat
我们把需要插入 redis 的数据创建为如下的一个命令集文件
set key1 val1
set key2 val2
...
set key3 val3
我们使用如下命令执行数据导入
> $ cat /tmp/test|nc localhost 6379
+OK
+OK
+OK
pipe mode
使用 netcat 并不是一个可靠地方式,因为用netcat进行大规模插入时不能检查错误。从Redis 2.6开始redis-cli支持一种新的被称之为pipe mode的新模式用于执行大量数据插入工作。
我们创建这样一个命令集文件
set key1 val1
set key2 val2
set key3 val3 ss
set key3 val3 ss
set key3 val3 ss
set key3 val3 ss
set key3 val3 ss
使用pipe mode模式的执行命令如下
> $ cat /tmp/test|redis-cli --pipe
All data transferred. Waiting for the last reply...
ERR syntax error
ERR syntax error
ERR syntax error
ERR syntax error
ERR syntax error
Last reply received from server.
errors: 5, replies: 7
这应可以看到命令执行的错误情况。
redis 协议
我们可以通过把命令集转化为 redis 协议,加快数据的写入。