C语言使用hiredis访问redis

时间:2022-01-31 23:10:32

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

C语言使用hiredis访问redis的更多相关文章

  1. Java语言访问Redis数据库之Set篇

    如果想通过Java语言对Redis数据库进行访问. 首先,需要安装Redis数据库,可以是Windows系统,或者Linux系统.(本文以Windows系统的本地Redis数据库为例,代码说明如何操作 ...

  2. python访问redis

    python访问redis 1 Linux上安装redis a) 下载 $ wget http://download.redis.io/releases/redis-3.0.5.tar.gz b) 编 ...

  3. windows下vs2013使用C&plus;&plus;访问redis

    刚开始在windows下使用c++访问reids各种报错,经过网上到处搜方案,终于可以在windows下访问redis了,特将注意事项记录下来: 1.获取redis Window下的开发库源码,从gi ...

  4. Rust语言Actix-web框架连接Redis数据库

    Rust语言Actix-web框架连接Redis数据库 actix-web2.0终于发布了,不再是测试版本,基于actor系统再加上异步支持,使得actix-web成为了目前响应速度最快的服务器框架, ...

  5. 使用Rest访问Redis中的数据

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com   大家在用Redis保存数据的时候,有不同的序列化方式.用得最多应该还是JSON,有一些场景我们需要以Http请 ...

  6. ODBC database driver for Go:Go语言通过ODBC 访问SQL server

    Go语言通过ODBC 访问SQL server,这里需要用到go-odbc库,开源地址::https://github.com/weigj/go-odbc 一.驱动安装 在cmd中打开GOPATH: ...

  7. 从JAVA客户端访问Redis示例&lpar;入门&rpar;

    转自:http://blog.csdn.net/kkdelta/article/details/7217761 本文记录了安装Redis和从JAVA端访问Redis的步骤 从http://downlo ...

  8. 使用RedisTemplate的操作类访问Redis&lpar;转&rpar;

    深入理解Spring Redis的使用 (三).使用RedisTemplate的操作类访问Redis 事务需要开启enableTransactionSupport,然后使用@transactional ...

  9. jedis访问redis学习笔记

    最近在学习redis,在网上查了些文章,利用他人已有的知识,总结写下了这篇文章,大部分内容还是引用别人的文章内容.经过测试发现spring-data-redis现在有的版本只能支持reids 2.6和 ...

随机推荐

  1. java发送邮件&period;&period;转

    使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) . 你可以在 JavaMail ...

  2. ASP&period;NET 系统对象 Request(一)

    Request对象 用来获取客户端在请求一个页面或传送一个Form是提供的所有信息.它包括用户的HTTP变量.能够识别的浏览器.存储客户端的Cookie信息和请求地址等. Request对象是Syst ...

  3. jfinal和httl结合

    一导入jar包 二配置web.xml文件 三配置httl.properties文件 此时会出现如下问题: 解决办法: 加入 javassist-3.15.0-GA.jar包 再运行会有如下警告 解决办 ...

  4. HTTP03--DNS知识

    一.域名解析过程 1. 浏览器检查自身缓存,缓存时间为几分钟到小时不等,通过设置TTL属性确定. 2. 若1未找到,则查OS缓存,如windows下的host文件,linux的/etc/hosts文件 ...

  5. ctypes 模块

    ctypes赋予了python类似于C语言一样的底层操作能力,通过ctypes模块可以调用动态链接库中的导出函数.构建复杂的c数据类型. ctypes提供了三种不同的动态链接库加载方式:cdll(), ...

  6. 《Code Complete》ch&period;21 协同构建

    WHAT? 所有的协同构建技术都试图通过这样那样的途径,将展示工作的过程正式化,以便将错误暴露出来 WHY? 提高缺陷检出率,从而缩短开发周期,降低开发成本 发现不明显的错误信息,如不恰当的注释.硬编 ...

  7. 修改PYTHONPATH的一种方法(在Window平台和Ubuntu下都有效)

    1.显示PYTHONPATH 2.修改PYTHONPATH 通过PYTHONPATH 中的任何 .pth 文件来添加pythonpath.比如我想添加/home/aa这个路径到pythonpath里, ...

  8. datagrid的基本操作-增删改

    1 ---恢复内容开始--- <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&gt ...

  9. ALV列、行、单元格颜色设置

    )颜色含义 :海蓝:2:浅清:3:黄色:4:浅蓝:5:青色:6:红色:7:橙色. (1)首位为主颜色: (2)次位为辅助颜色: (3)末位为0时,表示首位数字表为表格的底色: 末位为1时,则表示以1为 ...

  10. PHP学习笔记----IIS7下安装配置php环境

    原文:PHP学习笔记----IIS7下安装配置php环境 Php如何安装 Php版本的选择 Php在windows下的(php5.4.7)有两种版本: VC9 x86 Non Thread Safe ...