hiredis

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

1、安装hiredis

进入Redis的源码包的deps/hiredis
make
make install
ldconfig #使动态库在系统中更新生效

2、接口介绍

#include <hiredis/hiredis.h>

// 该函数用来连接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 <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <hiredis/hiredis.h>

int main()
{
	redisContext * rc = redisConnect("127.0.0.1",6379);
	assert(rc != NULL);
	
	char* com = "hmset user name jack age 18 sex male height 180";
	redisReply* res =(redisReply*)redisCommand(rc,com);

	if(res->type == REDIS_REPLY_STATUS)
	{
		printf("Success %s\n",res->str);
	}
	else 
		printf("fail\n");
	
	com = "hgetall user";
	res = (redisReply*)redisCommand(rc,com);
	if(res->type == REDIS_REPLY_ARRAY)
	{
		for(int i = 0; i < res->elements; i++)
		{
			if(i%2 != 0)
				printf("%s\n",res->element[i]->str);
			else
				printf("%s",res->element[i]->str);
		}
	}
	else if(res->type == REDIS_REPLY_STRING)
	{
		printf("%s",res->str);
	}
	
	freeReplyObject(res);
	redisFree(rc);
	return 1;
}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐