我正在尝试使用https://redis.io/topics/mass-insert中提到的cat data.txt | redis-cli --pipe
命令执行Redis群发插入。
必须转换macOS上的数据格式,以便可以使用cat ${FILE} | perl -i -p -e 's|[\r\n]+|\r\n|g' | redis-cli --pipe
执行大量插入。
但是,上述命令在Linux环境(或基于高山的图像构建容器的docker环境)上不起作用。相反,以下命令必须执行cat ${FILE} | sed 's/\r*$/\r/' | redis-cli --pipe
。
是否有适用于这两种环境的命令?
编辑:附上以下内容:
Alpine Linux上的Redis Mass Insertion脚本:https://gist.github.com/francjohny/f2b13b4cfc147e07e52824ec88ba3781
Mac OS上的Redis Mass Insertion脚本:https://gist.github.com/francjohny/b57756a1e0124dd562959ca5ece2a32b
Redis协议格式数据文件:https://gist.github.com/francjohny/0c21f32d9902809b215f4e92f5e6a9f1
➜ head ouput.rpf| xxd - Mac OS
:https://gist.github.com/francjohny/e1a646ab44e7edd7374d28e9ca400711
➜ head ouput.rpf| xxd - Alpine Linux
:https://gist.github.com/francjohny/252904928ded4c045448d12b205228df
答案 0 :(得分:1)
更新了答案
根据您添加的数据,您似乎只有换行分隔线,而Redis需要回车后跟换行。所以基本上,你想要相当于perl -pe 's/\n/\r\n/' data.rpf | redis-cli --pipe
程序,它不包含在macOS中。但是,macOS确实包含Perl,因此您应该能够使用:
perl -pe 's|[\r\n]*|\r\n|' data.txt | redis-cli ...
在我的Mac上运行正常。
原始答案
您的各种环境中似乎都有混合行结尾。我想这个Perl可以用一个回车替换任意数量的回车和换行,并且像Redis一样需要换行:
get_post_meta()
如果没有,请在评论中回答我的问题。