我正在尝试创建一个脚本来解码来自 redis 的数据。我可以将其设为节点脚本,但我只是希望它尽可能简单。
这是我到目前为止所得到的。
redis-cli GET "d1g8y" | xargs -i node -e "require('zlib').gunzip(Buffer.from('{}', 'base64'), function(err, string) { console.log(string.toString()); })"
但这不起作用。如何从该命令获取结果redis-cli GET "d1g8y"
并将其放入该脚本中Buffer.from('$VARIABLE_FROM_PREVIOUS_COMMAND', 'base64')
这就是我压缩数据的方式
const zlib = require('zlib');
const zipAsync = Promise.promisify(zlib.gzip, {context: zlib});
return zipAsync(Buffer.from(value)).then(console.log);
谢谢。
答案1
为什么要使用node
?有点像用榴弹炮猎鹿,不是吗?
redis-cli GET "d1g8y" | zcat | base64 --decode
zcat
会将 gzip 压缩的数据转换为纯文本,在您的情况下,它恰好是一个 base64 编码的字符串,因此我们只需将其传输到解码器中即可。