【Redis】官方推荐的基于C接口hiredis

【Redis】官方推荐的基于C接口hiredis,第1张

hiredis

hiredis是Redis官方推荐的基于C接口的客户端组件,它提供接口,供c语言调用以 *** 作数据库。

//头文件
#include 

//连接redis数据库,参数为ip地址和端口号,默认端口6379.该函数返回一个redisContext对象
redisContext *redisConnect(const char *ip, int port);

//执行redis命令,返回redisReply对象
void *redisCommand(redisContext *c, const char *format, ...);

//释放redisCommand执行后返回的RedisReply对象
void freeReplyObject(void *reply);

//断开redisConnect所产生的连接
void redisFree(redisContext *c);

//redisReply对象结构如下:
typedef struct redisReply
{
	int type; // 返回结果类型
	long long integer; // 返回类型为整型的时候的返回值
	size_t len; // 字符串的长度
	char *str; // 返回错误类型或者字符串类型的字符串
	size_t elements; // 返回数组类型时,元素的数量
	struct redisReply **element; // 元素结果集合
}redisReply;

//返回类型有以下几种:
REDIS_REPLY_STRING   1   //字符串
REDIS_REPLY_ARRAY    2   //数组,多个reply,通过element数组以及elements数组大小访问
REDIS_REPLY_INTEGER  3   //整型
REDIS_REPLY_NIL      4   //空,没有数据
REDIS_REPLY_STATUS   5   //状态,str字符串以及len
REDIS_REPLY_ERROR    6   //错误,同STATUS

C程序 *** 作Redis代码示例:

#include 
#include 
#include 
#include 
#include 
#include 


int main()
{
    //连接redis
    redisContext *c  = redisConnect("127.0.0.1", 6379);  
    assert(c != NULL);

    //要执行的redis命令
    char * com = "hmset user:1 name wangjiaxin age 21";  

    //执行命令
    redisReply * r = (redisReply*)redisCommand(c, com);  
    assert(r != NULL);

    //执行命令后获得的结果集的类型
    if(r->type == REDIS_REPLY_STATUS) 
    {
        printf("%s\n", r->str);
        printf("success\n");
    }
    else
    {
        printf("fail\n");
    }

    com = "hgetall user:1";
    r = (redisReply*)redisCommand(c, com);

    if(r->type == REDIS_REPLY_ARRAY)  //数组,多个reply,通过element数组以及elements数组大小访问
    {
        int i = 0;
        for(; i < r->elements; ++i)
        {
            if((i+1) % 2 == 0)
            {
                printf("%s\n", r->element[i]->str);
            } 
            else
            {
                printf("%s ", r->element[i]->str);
            }
        }
    }        
    freeReplyObject(r); // 释放redisReply对象
    redisFree(c); // 断开连接
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1295421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存