使用Redis客户端hiredis遇到的一些问题
博客专区 > COSE 的博客 > 博客详情
使用Redis客户端hiredis遇到的一些问题
COSE 发表于3年前
使用Redis客户端hiredis遇到的一些问题
  • 发表于 3年前
  • 阅读 114
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】买域名送云解析+SSL证书+建站!>>>   

摘要: Redis中key或者value中包括空格时,使用hiredis执行redis命令的问题。


在使用Redis客户端hiredis处理redis的命令时,当key或者value中包括空格时,遇到命令执行失败的问题。

具体情况如下:


#include <hiredis/hiredis.h>

int main(int argc, char const *argv[])
{
    redisContext *c = redisConnect("127.0.0.1", 6379);
    if (c != NULL && c->err) {
        printf("Error: %s\n", c->errstr);
    }

    redisReply *reply;

    // 执行命令: SET foo "bar bar"
    // 直接使用字符串拼接会执行错误
    reply = redisCommand(c, "SET foo \"bar bar\"");
    if (reply->type == REDIS_REPLY_ERROR) {
        printf("Error - 1: %s\n", reply->str);
    }

    // 通过%s代替后可以正确执行
    reply = redisCommand(c, "SET foo %s", "bar bar");
    if (reply->type == REDIS_REPLY_ERROR) {
        printf("Error - 2: %s\n", reply->str);
    }
    
    return 0;
}


程序的执行结果如下:

roo@roose:~/myredis$ cc hitest.c -lhiredis
roo@roose:~/myredis$ ./a.out 
Error - 1: ERR syntax error



  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
COSE
粉丝 6
博文 21
码字总数 9962
×
COSE
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: