文档章节

使用Redis客户端hiredis遇到的一些问题

COSE
 COSE
发布于 2015/02/06 16:18
字数 205
阅读 133
收藏 0


在使用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

COSE

粉丝 6
博文 22
码字总数 10162
作品 0
南京
程序员
从hiredis使用出core谈谈redis多线程的使用

在实际工作中,我需要使用redis的客户端去连接redis,于是选择了hiredis客户端(公司强推)。 hiRedis 是 Redis 官方指定的 C 语言客户端开发包,支持 Redis 完整的命令集、管线以及事件驱动编...

jungleliu0923
2014/02/25
0
6
hiredis-win32+libevent

决定用redis作为cache服务器,要求其服务端和客户端都支持跨平台win和linux 但我发现redis(/作者)对windows态度极差,不考虑,不支持 微软公司的闲人们主动靠过去,推出win版。这么一来,r...

雅各宾
2013/07/25
0
0
CentOS编译swoole 的hiredis遇到的坑

在centos6.8的环境下,最开始编译swoole不带任何参数,没任何问题。今天在测试swoole的异步redis。编译hiredis后,再执行swoole相关测试脚本,总提示如下错误: 关于类似的问题,swoole官方文...

jichun
05/06
0
0
为什么会有Memlink? redis

为什么会有Memlink? 对于大型论坛服务,比如百度贴吧、天涯论坛,日均发帖量过百万或千万,日均PV过亿,日积月累下来的帖子数量可能几十亿到上百亿。这种超级论坛,其海量存储、海量访问都是...

玄觉
2013/04/21
0
0
Redis,GetStart on windows

redis 一个可扩展的高性能的nosql数据库,越来越多的产品在使用它,redis是目前只能在linux下编译,这么好的东西肯定会有人移植到window平台的,点击msopentech移植的版本. 这里先说一下测试环境...

Injection
2013/06/04
0
3

没有更多内容

加载失败,请刷新页面

加载更多

多线程

1. 多线程概念。并发和并行的概念。 多线程指的是一段时间内cpu同时执行多个线程。一个程序至少运行>=1个进程,进程就是运行中的程序,而一个进程至少运行>=1个线程,线程是操作系统能调度的...

鱼想吃肉
25分钟前
0
0
HBase 表修复在线方式和离线方式

一、在线修复 1.1 使用检查命令 $ ./bin/hbase hbck 该命令可完整修复 HBase 元数据信息;存在有错误信息会进行输出; 也可以通过如下命令查看详细信息: $ ./bin/hbase hbck -details 1.2 ...

Ryan-瑞恩
50分钟前
2
0
redis 系列二 -- 常用命令

1.基础命令 info ping quit save dbsize select flushdb flushall 2.键命令 2.1 set 直接赋值 set a a 2.2 get 取值 get a 2.3 exists 是否存在 exists a 2.4 expire 设置剩余时间 秒 expire......

imbiao
今天
2
0
php foreach

<?php// 数组的引用$a=array(1,2,3,4,5);foreach($a as $key=>&$value){$value=$value*2;}print_r($a);echo " $key -------------------$value\r\n";/** * ...

小张525
今天
3
0
12-利用思维导图梳理JavaSE-多线程

12-利用思维导图梳理JavaSE-多线程 主要内容 1.线程概念 2.线程开发 3.线程的状态 4.线程的同步和死锁 5.Java5.0并发库类 QQ/知识星球/个人WeChat/公众号二维码 本文为原创文章,如果对你有一...

飞鱼说编程
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部