ses*_*ses 2 bash json redis redis-cli
我有一个bash.sh脚本:
#!/usr/bin/env bash
val=$(cat ../my-microservice/conf/config.json)
echo "set my-microservice-config ${val}" | redis-cli
Run Code Online (Sandbox Code Playgroud)
config.json在哪里:
{
"key" : "value"
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到了:
ERR未知命令'}'
如何从json文件中正确设置json值?
如果您尝试将key 的字符串值设置为my-microservice-configJSON文件的内容(或任何其他内容,包括二进制文件),最简单的方法是使用-x选项inredis-cli来读取命令的最后一个参数,从stdin.例如:
$ redis-cli -x set my-microservice-config < config.json
OK
Run Code Online (Sandbox Code Playgroud)
对于您的示例,这将存储:
$ redis-cli get my-microservice-config
"{\n \"key\" : \"value\"\n}\n"
Run Code Online (Sandbox Code Playgroud)
要存储JSON数据的紧凑表示,可以使用jq .with -c flag:
$ jq -c . config.json | redis-cli -x set my-microservice-config
OK
$ redis-cli get my-microservice-config
"{\"key\":\"value\"}\n"
Run Code Online (Sandbox Code Playgroud)
请注意,Redis本身不支持JSON,但如果需要解释的JSON值(JSON数据类型),可以使用ReJSON模块.