redis c++ 库封装之路(二)了解hiredis

针对不同的语言有不同的操作redis的库。
Hiredis就是一个C库函数,提供了基本的操作函数。
是库就有接口,本着8/2 原则,很多东西重要的往往是其中的20%。
用到的主要的接口就4个,这四个基本实现80%的需求。

redisContext *redisConnect(const char *ip, int port);
void *redisCommand(redisContext *c, const char *format, ...);
void freeReplyObject(void *reply);
void redisFree(redisContext *c);

下面详细讲解这几个函数,以及这几个函数牵扯的结构体

简单介绍下这4个接口:

redisContext redisConnect(constcharip,int port);
作用: 连接redis

返回值: 是一个内置结构体redisContext :主要需要了解的字段就是带注释的err 和errstr

参数: 很明显传入的是redis的ip 和端口(默认6379)

/* Context for a connection to Redis */
typedef struct redisContext {
    int err; //错误码,0标识没有错误
    char errstr[128]; //描述错误的信息
    int fd;
    int flags;
    char *obuf; /* Write buffer */
    redisReader *reader; /* Protocol reader */

    enum redisConnectionType connection_type;
    struct timeval *timeout;

    struct {
        char *host;
        char *source_addr;
        int port;
    } tcp;

    struct {
        char *path;
    } unix_sock;

} redisContext;

void*redisCommand(redisContext c,constcharformat,…)
作用: 向redis 服务发送命令

返回值: 看起来是void* 其实返回的是redisReply* 或者NULL(错误的情况下) 。

参数: 第一个参数是,调用连接接口返回的结果,

第二个直接传入需要执行的Redis指令

/* This is the reply object returned by redisCommand() */
typedef struct redisReply {
    int type; //返回的数据类型
    long long integer; //当type是数字类型的时候,这个值就是数字的值
    size_t len; //当type是字符串类型的时候,这个值代表字符串的长度
    char *str; //当出现错误的时候这个值是错误描述;当返回类型是字符串的时候,这个值是字符串的值
    size_t elements; //当返回值是数组类型的时候,
    struct redisReply **element; //当返回值是数组的时候,存储返回的数组
} redisReply;

redisReply这个结构体比较重要,因为发送命令是要有反馈的,这个结构体包含了反馈的结构。后面的章节在应用的时候,我们会专门针对这个结构体进行说明

*void freeReplyObject(void reply);
作用: 释放执行命令后返回结果reply 占用的内存

返回值: void

参数: void*redisCommand(redisContext c,constcharformat,…) 接口返回的结果

*void redisFree(redisContext c);
作用: 释放与整个redis的连接
返回值: void
参数: redisContext *redisConnect(const char *ip, int port);接口返回的连接结构对象

欢迎加入it技术互吹乱坎群 387220290。在这里一起胡吹乱砍戏技术人生

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页