C语言操作redis数据库

2023-05-16

文章目录

    • 1. 开发环境
    • 2. C语言redis库-hiredi安装配置
      • 2.1 下载并且解压hiredis
      • 2.2 hiredis安装
    • 3. hiredis简单测试
    • 4. 运行出错解决办法
    • 5. 验证
      • 5.1 运行程序
      • 5.2 redis客户端验证

1. 开发环境

  • 适用linux操作系统(本次环境在树莓派上使用测试通过)
  • 已经安装redis服务端

2. C语言redis库-hiredi安装配置

2.1 下载并且解压hiredis

wget https://github.com/redis/hiredis/archive/master.zip
(上面链接下载的是hiredis最新版本,本版本用的是ibhiredis.so.0.14,所以要上https://github.com/redis中找到对应的版本)
unzip master.zip
cd hiredis-0.14.0/

2.2 hiredis安装

sudo make
sudo 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 sslio.h /usr/local/include/hiredis
cp -pPR adapters/*.h /usr/local/include/hiredis/adapters
cp -pPR libhiredis.so /usr/local/lib/libhiredis.so.0.14
cd /usr/local/lib && ln -sf libhiredis.so.0.14 libhiredis.so
cp -pPR libhiredis.a /usr/local/lib
mkdir -p /usr/local/lib/pkgconfig
cp -pPR hiredis.pc /usr/local/lib/pkgconfig

看到这里就装在成功了

3. hiredis简单测试

vim 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");  
    if (reply->type == 1)//获取到了数据
    {
        printf("%s\n", reply->str);    
    }
  

    freeReplyObject(reply);  
  
    redisFree(conn);  
  
    return 0;  
}

编译:
gcc test.c -o test -lhiredis
运行:
./test
报错:
error while loading shared libraries: libhiredis.so.0.14: cannot open shared object file: No such file or directory

4. 运行出错解决办法

  • sudo mkdir /usr/lib/hiredis
  • sudo cp /usr/local/lib/libhiredis.so.0.14 /usr/lib/hiredis/
  • sudo mkdir /usr/include/hiredis
  • sudo cp /usr/local/include/hiredis/hiredis.h /usr/include/hiredis/

5. 验证

5.1 运行程序

./test
输出1234

5.2 redis客户端验证

运行redis-cli
127.0.0.1:6379> get foo
"1234"
若显示“1234”代表安装hiredis成功
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言操作redis数据库 的相关文章

  • 如何隔离Spring Boot应用程序Redis和Spring Boot会话全局Redis

    据我所知 spring boot和spring session为我们提供了一站式自动配置 但是当我的应用程序使用会话redis和应用程序缓存redis时 不是同一个redis服务器 我该如何配置呢 非常感谢您的回复 事实上 默认情况下 sp
  • 如何在node.js中为相同的两个应用程序分离redis数据库

    我有两个相同的应用程序 一个用于演示 一个用于开发 并且我使用 redis 数据库来存储键值 我如何为这两个不同的应用程序分离 redis 数据库 我使用 Node js 作为 Redis 客户端 我用这个https github com
  • ServiceStack:手动调用服务时恢复管道?

    作为后续这个问题 https stackoverflow com questions 64560997 servicestack messaging api can it make a broadcast 我想了解如何改进我对服务的手动调用
  • 如何在多线程应用程序中使用 StackExchange.Redis IDatabase 对象?

    我从 StackExchange Redis 文档中收到有关如何使用 IDatabase 的混合消息 在里面基本使用文档 https github com StackExchange StackExchange Redis blob mas
  • 在节点中使用redis获取hash key的所有字段和值

    红色是使用哈希 我需要存储具有多个字段和值的哈希键 我尝试如下 client hmset Table1 Id 9324324 ReqNo 23432 redis print client hmset Table1 Id 9324325 Re
  • StackExchange.Redis 和 StackExchange.Redis.StrongName 之间有什么区别?

    当我关注Azure时文档 http azure microsoft com en us documentation articles cache dotnet how to use azure redis cache 关于如何在Azure
  • 如何在redis中创建自己的数据库?

    There are 0 to 15 databases in redis 我想使用 redis cli 创建自己的数据库 有什么命令可以实现吗 Redis 数据库并不等同于 MySQL 等 DBMS 中的数据库名称 这是一种为键创建隔离和命
  • Laravel - 缓存 Eloquent 并频繁更新

    是否可以对经常修改的对象使用缓存 例如 假设我们有一个 BlogPost 对象 并且有一个经常更改的 num of views 列 以及其他列 是否可以更新缓存和数据库中的 num of views 字段 而不破坏缓存对象并重新创建它 我可
  • 保护节点 Redis

    我正在尝试保护 Node Redis IPC 服务器以使用私钥 公钥 我已经关注了本教程 http bencane com 2014 02 18 sending redis traffic through an ssl tunnel wit
  • python 3.5 中的 json.loads 和 Redis

    我使用 json dumps 创建了一个 JSON 对象 并在 Redis 列表中将其 RPUSH ed 当使用 LRANGE redis lrange 返回 JSON 时 我收到一个二进制字符串 b si 00 ff 所以 json lo
  • 我的 Redis 自动生成的密钥

    我不知道我的 Redis 版本 4 0 9 到底发生了什么 我正在运行一个应用程序并使用 Redis 来存储我的数据库 但是 然后 Redis 自动创建 3 个新键 Backup1 Backup2 Backup3 并删除我的所有数据 这是我
  • redis集群不断打印日志WSA_IO_PENDING

    当我启动redis集群的所有redis服务器时 所有这些服务器不断打印类似WSA IO PENDING clusterWriteDone的日志 9956 03 Feb 18 17 25 044 WSA IO PENDING writing
  • 如何在节点redis客户端上设置读取超时?

    在 github 上我没有看到读取超时的选项 https github com NodeRedis node redis https github com NodeRedis node redis There s connect timeo
  • Spring Data Redis - Lettuce连接池设置

    尝试在 spring data redis 环境中设置 Lettuce 连接池 下面是代码 Bean LettuceConnectionFactory redisConnectionFactory GenericObjectPoolConf
  • 在 sidekiq 上配置 redis 身份验证

    我想我错过了一些东西 因为我在文档中找不到如何编写 redis 实例的用户名和密码以与 sidekiq 一起使用 有没有办法做到这一点 或者是通过 ENV 变量 Sidekiq 将无法识别的 Redis 选项直接传递给 Redis 驱动程序
  • 使用Redis从有限范围内生成唯一ID

    我有一些数据库项目 除了主键之外 还需要项目所属组的唯一索引 我们来调用属性nbr 以及将项目分组在一起并定义唯一范围的属性nbr 我们会打电话group This nbr必须在 1 N 范围内 并且may从外部源导入项目时进行设置 由于所
  • 使用 Redis 命令 incr 和 expire 时的竞争条件

    根据redis文档 http redis io commands incr http redis io commands incr 在段落模式 速率限制器 2 较短的版本代码 value INCR ip IF value 1 THEN EX
  • Redis发布/订阅:查看当前订阅了哪些频道

    我目前有兴趣查看我拥有的 Redis 发布 订阅应用程序中订阅了哪些频道 当客户端连接到我们的服务器时 我们将它们注册到如下所示的通道 user user id 这样做的原因是我希望能够看到谁 在线 目前 我在不知道客户端是否在线的情况下盲
  • Java 将字节转换为二进制安全字符串

    我有一些以字节为单位的数据 我想将它们放入Redis中 但是Redis只接受二进制安全字符串 而我的数据有一些二进制非安全字节 那么如何将这些字节转换为二进制安全字符串以便将它们保存到 Redis 中呢 Base64 对我有用 但它使数据更
  • Redis、会话过期和反向查找

    我目前正在构建一个网络应用程序 并想使用 Redis 来存储会话 登录时 会话会使用相应的用户 ID 插入到 Redis 中 并且过期时间设置为 15 分钟 我现在想实现会话的反向查找 获取具有特定用户 ID 的会话 这里的问题是 由于我无

随机推荐

  • 解决error:OpenCV4.3.0 无法解析的外部符号 void __cdecl cv::imshow

    今天用opencv 4 3 0写demo xff0c 遇到编译错误 xff1a error LNK2019 无法解析的外部符号 void cdecl cv imshow xff0c 反复检查了几次VS的配置 xff0c 确定自己包含了头文件
  • 毫米波雷达和视觉融合简记

    毫米波雷达和视觉传感器融合笔记 毫米波雷达和摄像头概述毫米波雷达和视觉传感器融合时间融合空间融合 写在前面 xff1a 1 按照信息抽象的五个层次 xff0c 融合可分成五个级别 xff0c 即 xff1a 检测级融合 位置级融合 属性 x
  • 多目标跟踪-DeepSort分析(一)论文解读及代码架构

    先引入多目标跟踪DeepSort的论文地址及代码链接 xff08 Python版 xff09 xff1a 论文地址 xff1a https arxiv org pdf 1703 07402 pdf 代码链接 xff1a https gith
  • stm32f4xx 加密

    文章参考http www 61ic com Technology embed 201311 50853 html xff0c 一 ID获取 34 设备电子签名 电子签名存储在 Flash 区 可以使用 JTAG SWD 或 CPU 对其进行
  • C++为什么要学习STL和Boost库

    最近一年我电话面试了数十位 C 43 43 应聘者 xff0c 惯用的暖场问题是 工作中使用过 STL 的哪些组件 xff1f 使用过 Boost 的哪些组件 xff1f 得到的答案大多集中在 vector map 和 shared ptr
  • 智能硬件新产品开发逻辑

  • 移动机器人入门介绍

    移动机器人技术应用 xff1a 天上飞的 xff0c 水里游的 xff0c 地上跑的 xff0c 都可以应用移动机器人领域的技术 比如说 xff0c 1 工业机器人 xff0c 搬运机器人 xff08 AGV xff09 xff1b 2 商
  • 占据栅格地图(occupancy grid maps) -- 二值贝叶斯滤波应用

    其实 xff0c 我想讲的关键点是二值状态的最优估计问题 xff0c 而不仅仅是栅格地图 Anyway xff0c that is a good example 机器人的地图表示方式有多种 xff0c 如拓扑地图 特征地图 直接表征法 栅格
  • 粒子滤波实现及推导

    一 应用 example xff1a 机器人全局定位 粒子滤波实现过程解读 二 推导 从贝叶斯到粒子滤波 三 工程化细节探讨 这是草稿 xff0c 待完善
  • 卫星信号的上行下行学习笔记

    gt gt gt gt gt gt 我的博客目录导航 最近被卫星电视信号的发射接收过程弄的头疼 xff0c 于是潜心找了本书 卫星电视接收DIY 细细看看下 1 地面信号上星 以前在家弄个 锅 看看电视 xff0c 电视里主持人录节目 xf
  • 信息与不确定性

    最近学习了吴军的 信息论40讲 xff0c 深有感触 xff0c 有感而发 xff01 本博文想要给你传递 xff08 或者说洗脑 xff09 两个主要观点 xff1a 信息是可以量化的 xff0c 用事件的不确定性表示 xff0c 增加相
  • AlexeyAB/darknet (YOLO)的编译 和 作为动态库进行使用 以及 训练 自定义 数据(检测网络和分类网络)

    ubuntu 编译 https github com AlexeyAB darknet 这个库很贴心了 xff0c 当然 xff0c 主要是 darknet的实现也很硬核 xff0c 自带图像编解码 xff0c 各种造轮子 文档 把 各种用
  • LoRa和NB-IoT有什么区别?LoRa的优势在哪些方面?

    对于LoRa技术 xff0c 行业内人士都不会陌生 xff0c 它也经常会被拿来和NB IoT技术比较 作为低功耗广域网 xff08 LPWAN xff09 的新兴技术 xff0c 两种技术都备受关注 对于LoRa技术 xff0c 行业内人
  • Source Insight 4.0最好看的主题

    推荐一款sourceinsight主题 xff0c 4 0适用 xff0c 配色本人觉得非常舒服 使用方法 xff1a 1 安装Sourceinsight 2 安装字体 xff1a YaHei Consolas Hybrid 1 12 tt
  • Notepad++最好看的主题

    Notepad 43 43 最好看的主题 xff0c 收藏了很久 xff0c 现在拿出来和大家分享 配色如下 xff1a 使用方法 xff1a 1 安装Notepad 43 43 2 将KamiTheme xml放到 Notepad 43
  • DTLS协议中client/server的认证过程和密钥协商过程

    1 DTLS介绍 1 1 DTLS的作用 互联网先驱们最开始在设计互联网协议时主要考虑的是可用性 xff0c 安全性是没有考虑在其中的 xff0c 所以传输层的TCP UDP协议本身都不具备安全性 SSL TLS协议是基于TCP socke
  • Ubuntu18.04 实现串口通信

    最近由于项目需要 xff0c 研究了关于在ubuntu下串口通信的功能实现 期间遇到一些问题 xff0c 跟大家分享下 1 代码 comm service h ifndef comm service h define comm servic
  • [STM32] 串口数据帧处理(第一弹)

    文章目录 1 串口使用的常用场景2 字节帧处理总结 1 串口使用的常用场景 使用串口的主要目的是实现数据的交互 xff0c 数据的交互的方法脱身于常用的场景 这里描述一个比较典型的场景 xff1a MCU作为主控制器通过串口和外部的设备或者
  • 串口编程—(1)串口基本知识

    串口是用来干什么的 xff1f 串行接口 简称串口 xff0c 也称 串行通信 接口或 串行通讯接口 xff08 通常指 COM接口 xff09 xff0c 是采用 串行通信 方式的扩展接口 串行接口 Serial Interface 是指
  • C语言操作redis数据库

    文章目录 1 开发环境2 C语言redis库 hiredi安装配置2 1 下载并且解压hiredis2 2 hiredis安装 3 hiredis简单测试4 运行出错解决办法5 验证5 1 运行程序5 2 redis客户端验证 1 开发环境