温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

redis pipe管道

发布时间:2020-07-07 03:55:22 来源:网络 阅读:5923 作者:lilugoodjob 栏目:开发技术

redis pipe管道

redis命令在从提交到返回处理结果的过程中,消耗的时间我们称之为RTT(往返时间)。

在需要批量执行redis 命令的场景下,如果命令单条逐个执行,那么总共花费的时间是命令条数 N * RTT。

redis 提供了管道技术来提高批量执行效率,即将多个命令打包发送给redis服务端,所有命令执行完后,再将所有结果打包返回。

在所有命令执行结束前,redis服务器会缓存已执行结束的结果。

在redis-cli命令行中,

使用redis管道技术时,我们通常将待执行的命令放到一个文本里,比如commands.txt,然后使用命令:

cat commands.txt | redis-cli --pipe

去读取文本里的命令,然后打包已pipe管道的方式发送给redis服务端。

如果命令需要带参数,我们可以根据redis官方提供的命令协议格式:

*<number of arguments> CR LF

$<number of bytes of argument 1> CR LF

<argument data> CR LF

...

$<number of bytes of argument N> CR LF

<argument data> CR LF

额,上面这段是不是很烦?是的,其实没有这么复杂,你可以直接将多个redis命令写到一个文件commands.txt里,记住是每个命令占一行。

然后执行:cat commands.txt |redis-cli --pipe

以管道方式执行。

你以为就万事大吉了?no!你很可能会遇到这个错误:

ERR unknown command 'et'

即执行了第一条命令,剩下的都报错了。原因是redis-cli中只支持dos格式的换行符 \r\n ,因此你需要对文件进行转码:unix2dos commands.txt

然后再执行上面的命令。


附:安装unix2dos:

macOS: 

brew install unix2dos -y


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI