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;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)