好吧,我在 centos6 中使用 hiredis 客户端连接 redis 服务器并使用它的 redisAppendCommand() 向服务器发送命令。
redisContext *redisConnect(ip,port);
std::string value = "E 1";
std::string field_name = "field";
std::string id_code = "id";
std::string key = "HSET type:info:"+ id_code + " " + field_name + " " +value;
redisAppendCommand(_contxt, key.c_str());
它无法按我的意愿将值设置为 E 1。然后我像这样更改代码,
redisContext *redisConnect(ip,port);
std::string value = "E 1";
std::string field_name = "field";
std::string id_code = "id";
std::string key = "HSET type:info:"+ id_code + " " + field_name + " \"" +value + "\"";
redisAppendCommand(_contxt, key.c_str());
但是这个值会包含\"因为它的内容,所以值变成\"E 1\",我只想知道是否有任何方法可以将值设置为E 1 用 hiredis 吗? 谢谢。
最佳答案
您可以使用格式字符串来指定命令参数:
string key_name = "type:info:" + id_code;
redisAppendCommand(redisContext,
"%s %b %b %b",
"HSET",
key_name.data(), key_name.size(),
field_name.data(), field_name.size(),
value.data(), value.size());
%b
,在格式字符串中,表示二进制字符串。使用此标志,您可以为键名、字段名和值指定任何字符。由于它是二进制字符串,因此您必须指定字符串的长度。
关于redis - 如何使用 hiredis 在 Redis 中设置包含空格的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40371710/