redis - 如何使用 hiredis 在 Redis 中设置包含空格的值

标签 redis whitespace centos6 hiredis

好吧,我在 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/

相关文章:

swift - 为什么 Swift 的三元运算符对空格如此挑剔?

html - 我该如何解决这个定位?

javascript - 需要在javascript中保留空格

linux - 无法从互联网访问网络服务器 Centos 6.5

linux - 如何创建仅具有某些扩展名但忽略服务器生成的具有类似扩展名的文件的 tar 文件?

laravel - 如何使用 Redis TLS 配置 Laravel 5.7(使用 phpredis)

redis - Azure Redis 缓存 - 在选择 MaxMemory-Reserved 和 MaxMemory-Policy 时需要帮助

ruby - 检索/列出 Redis 数据库中的所有键/值对

node.js - 负载平衡 : Node. js - Socket.io - Redis

php - PHP 网站错误 : 403 Forbidden in centos 6. 4