Hiredis 是 Redis 数据库的简约 C 客户端库. 它是简约的, 因为它只是增加了对协议的最小支持, 但是同时它使用了一个高级别的 printf-like API, 所以对于习惯了 printf 风格的 C 编程用户来说, 其非常容易使用, 而且 API 中没有明确的绑定每个 Redis 命令.
Github: https://github.com/redis/hiredis
安装 hiredis
编译安装:
$ git clone git@github.com:redis/hiredis.git
- $ cd hiredis
- $ make
- $ make install
下面是 make install 的输出:
- mkdir -p /usr/local/include/hiredis /usr/local/include/hiredis/adapters /usr/local/lib
- cp -pPR hiredis.h async.h read.h sds.h /usr/local/include/hiredis
- cp -pPR adapters/*.h /usr/local/include/hiredis/adapters
- cp -pPR libhiredis.so /usr/local/lib/libhiredis.so.0.13
- cd /usr/local/lib && ln -sf libhiredis.so.0.13 libhiredis.so
- cp -pPR libhiredis.a /usr/local/lib
- mkdir -p /usr/local/lib/pkgconfig
- cp -pPR hiredis.pc /usr/local/lib/pkgconfig
复制动态链接库到 lib:
cp libhiredis.so /usr/lib64 /usr/lib
若是 32 系统只需要运行:
cp libhiredis.so /usr/lib
还需要更新下动态链接库缓存:
/sbin/ldconfig
ldconfig 命令的用途主要是在默认搜寻目录 /lib 和 /usr/lib 以及动态库配置文件 /etc/ld.so.conf 内所列的目录下, 搜索出可共享的动态链接库 (格式如 lib*.so*), 进而创建出动态装入程序(ld.so) 所需的连接和缓存文件. 缓存文件默认为 /etc/ld.so.cache , 此文件保存已排好序的动态链接库名字列表, 为了让动态链接库为系统所共享, 需运行动态链接库的管理命令 ldconfig , 此执行程序存放在 / sbin 目录下.
ldconfig 通常在系统启动时运行, 而当用户安装了一个新的动态链接库时, 就需要手工运行这个命令.
客户端代码
- test.c
- #include <stdio.h>
- #include <hiredis/hiredis.h>
- int main()
- {
- redisContext* conn = redisConnect("127.0.0.1", 6379);
- if(conn->err) printf("connection error:%s\n", conn->errstr);
- redisReply* reply = redisCommand(conn, "set foo 1234");
- freeReplyObject(reply);
- reply = redisCommand(conn, "get foo");
- printf("%s\n", reply->str);
- freeReplyObject(reply);
- redisFree(conn);
- return 0;
- }
然后:
$ gcc test.c -o test -lhiredis
编译是一定要使用 - l 连接动态库.
-lstack 告诉编译器要链接 lhiredis 库.
运行:
$ ./test 1234
函数原型
- redisConnect
- redisContext *redisConnect(const char *ip, int port)
说明: 该函数用来连接 redis 数据库, 参数为数据库的 ip 地址和端口, 一般 redis 数据库的端口为 6379.
该函数返回一个结构体 redisContext.
- redisCommand
- void *redisCommand(redisContext *c, const char *format, ...);
说明: 该函数执行命令, 就如 sql 数据库中的 SQL 语句一样, 只是执行的是 redis 数据库中的操作命令, 第一个参数为连接数据库时返回的 redisContext, 剩下的参数为变参, 就如 C 标准函数 printf 函数一样的变参.
返回值为 void*, 一般强制转换成为 redisReply 类型的进行进一步的处理.
- freeReplyObject
- void freeReplyObject(void *reply);
说明: 释放 redisCommand 执行后返回的 redisReply 所占用的内存.
- redisFree
- void redisFree(redisContext *c);
说明: 释放 redisConnect() 所产生的连接.
来源: https://www.cnblogs.com/52fhy/p/9196527.html