当前位置: 首页 > news >正文

hiredis的安装与使用

hiredis的介绍

Hiredis 是一个用于 C 语言的轻量级、高性能的 Redis 客户端库。它提供了一组简单易用的 API,用于与 Redis 数据库进行交互。Hiredis 支持 Redis 的所有主要功能,包括字符串、哈希、列表、集合、有序集合等数据结构的读写操作,以及发布订阅、事务和管道等高级功能。

Hiredis 设计简洁,代码轻量,且具有很高的性能。它被广泛用于开发需要与 Redis 数据库进行交互的 C 语言项目,可以帮助开发者轻松快捷地利用 Redis 的强大功能。同时,Hiredis 也提供了一系列的命令行工具,用于方便地测试和验证与 Redis 的连接和操作。

总而言之,Hiredis 是一个简单、高效的 C 语言 Redis 客户端库,适用于需要在 C 语言项目中与 Redis 进行交互的开发者。

hiredis的安装

在redis的发行包中的deps目录包含hiredis的源码,手动编译安装;

cd /deps/hiredis
make
make install

但是上述方法会出现一些错误
在这里插入图片描述
需要进入hiredis目录进行安装
在这里插入图片描述

第二种方法,在github下载安装,网址:
在这里插入图片描述
在这里插入图片描述
开启redis

redis-server redis.conf
redis-cli

使用make test进行测试
在这里插入图片描述

测试hiredis

#include <iostream>#include <hiredis/hiredis.h>int main() {// 创建一个Redis连接对象redisContext *c = redisConnect("127.0.0.1", 6379);if (c == NULL || c->err) {if (c) {std::cout << "Error: " << c->errstr << std::endl;// handle error, close connection, etc.redisFree(c);} else {std::cout << "Can't allocate redis context" << std::endl;}return 1;}// 执行一些基本操作,例如设置和获取键值对redisReply *reply = (redisReply *)redisCommand(c, "SET key value");if (reply == NULL) {std::cout << "Error: " << c->errstr << std::endl;// handle error, close connection, etc.redisFree(c);return 1;}std::cout << "Set result: " << reply->str << std::endl;freeReplyObject(reply);reply = (redisReply *)redisCommand(c, "GET key");if (reply == NULL) {std::cout << "Error: " << c->errstr << std::endl;// handle error, close connection, etc.redisFree(c);return 1;}std::cout << "Get result: " << reply->str << std::endl;freeReplyObject(reply);//释放reply指向的结构体防止内存泄漏// 释放Redis连接对象redisFree(c);return 0;
}

编译

g++ hiredis_test.cpp -o a -lhiredis

出现错误

./a: error while loading shared libraries: libhiredis.so.1.0.0: cannot open shared object file: No such file or directory

解决方法

首先使用vim打开/etc/ld.so.conf
加入动态库文件所在的目录在“include ld.so.conf.d/*.conf下方增加/usr/local/lib”

在这里插入图片描述

最重要的一步,运行ldconfig使所有库文件都被缓存到文件/etc/ld.so.cache中

编译运行程序得到结果
在这里插入图片描述
查看redis
在这里插入图片描述

http://www.lryc.cn/news/143955.html

相关文章:

  • 【InsCode】InsCode打造的JavaSE与Linux命令互融的伪Linux文件系统小项目
  • “深入解析JVM:探索Java虚拟机的内部机制“
  • 内网远程控制总结
  • Excel显示此值与此单元格定义的数据验证限制不匹配怎么办?
  • mysql(八)事务隔离级别及加锁流程详解
  • 华为云Stack的学习(二)
  • 好用的网页制作工具就是这6个,快点来看!
  • 一文讲通物联网嵌入式
  • Unity3D Pico VR 手势识别 二
  • ubuntu中使用iptables限制端口
  • Orchestrator介绍二 自身高可用性方案
  • 成集云 | 旺店通多包裹数据同步钉钉 | 解决方案
  • 什么是字体图标(Icon Font)?如何在网页中使用字体图标?
  • Blender文件云端GPU渲染
  • C++——引用
  • Flask入门一 ——虚拟环境及Flask安装
  • 接口测试json入参,不同类型参数格式书写
  • go web框架 gin-gonic源码解读03————middleware
  • win10电脑记事本在哪里?电脑记事本如何查看字数?
  • 【微服务】06-安全问题
  • js的this指向问题
  • Redis常用数据类型及命令
  • 软件工程(六) 面向对象分析(OOA)之UML图特点
  • QT 消息对话框按钮显示
  • 平衡二叉树及其应用详解
  • vue3+ ts ts语法在script写不知道为啥一直报错
  • c#写的端口监听,程序退出后,再次运行提示端口占用,且进程不存在
  • 跨域案例go gf ,请求代理,前端请求后端A转发给多个后端B
  • 9.4 集成功率放大电路
  • Java“牵手“拼多多商品详情数据、拼多多优惠券信息、拼多多到手价信息获取方法,拼多多API实现批量商品数据抓取示例