C语言使用hiredis访问redis
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()
所产生的连接。
参考
1、Redis:安装、配置、操作和简单代码实例(C语言Client端) - CSDN博客
https://blog.csdn.net/hj19870806/article/details/8724907
2、C语言访问redis(hiredis) - CSDN博客
https://blog.csdn.net/sole_cc/article/details/38015765
3、error while loading shared libraries问题解决 - CSDN博客
https://blog.csdn.net/qgd19931120/article/details/50971142
4、ldconfig命令_Linux ldconfig 命令用法详解:动态链接库管理命令
http://man.linuxde.net/ldconfig?mstqrk=qdwrv1
相关文章
- 研究Redis的创造者——Salvatore Sanfilippo(redis的作者)
- 数据库深度探索C语言与Redis数据库(c语言redis)
- 提升程序性能:Redis内存数据库介绍(redis内存数据库)
- Redis远程访问:简单配置实现(redis 远程访问设置)
- 如何使用Redis轻松访问(怎么访问redis)
- 如何在浏览器中访问Redis页面(怎么打开redis页面)
- 测试远程Redis访问性能实现简单速率(测试访问远程redis)
- Redis玩转掘金小册,尽享网盘快乐(掘金redis小册网盘)
- Redis如何记录排行榜(排行榜怎么存入redis)
- VB构建Redis客户端实现数据存储的迅速访问(vb redis客户端)
- 使用Redis加速列表查询(列表查询放到redis)
- 解决Redis乱码的简单有效方法(如何解决redis乱码)
- 夸张防火墙控制下Redis访问更安全(夸防火墙访问redis)
- 深入探索为何命令行无法访问Redis(命令行访问不了redis)
- 访问Redis集群如何配置外网访问(redis 集群配置外网)
- 如何使用Redis集群实现高可用性(redis集群怎么用)
- 优化Redis的频繁访问性能(r频繁访问redis)
- 重启后如何保证Redis数据安全从备份中恢复(redis重启备份方式)
- 据同步实现Redis跨机房的数据同步(redis跨机房数)
- Redis实现访问统计简单有效的实践方法(redis 访问统计)
- Redis访问密码设置保护你的数据安全(redis 设置访问密码)
- Redis表设计图助力数据访问的优化构建(redis表设计图)
- Redis让你实施访问白名单,安全性提升(redis 访问白名单)