针对不同的语言有不同的操作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。在这里一起胡吹乱砍戏技术人生