Hiredis_安装_重要API

news2024/9/19 13:50:43

目录

一 安装HiRedis

二 HiRedis的重要API

2.1 连接redis数据库

2.2 发送请求命令

2.3 释放资源

三 封装一个C++版本的HiRedis

一 安装HiRedis

1.下载hiredis软件包

git clone https://github.com/redis/hiredis.git 

2.进行解压与安装,步骤如下

cd hiredis
make
sudo make install

3.更新动态库配置文件

sudo ldconfig

4.头文件与实现文件路径

按照上面步骤安装之后,hiredis的头文件会存在/usr/local/include下面,hiredis的库文件存在/usr/local/lib下面

5.编译方式

g++ *.cc -lhiredis

6.后续在代码中引用hiredis的头文件,可以直接使用

#include <hiredis/hiredis.h>

二 HiRedis的重要API

2.1 连接redis数据库

redisContext* redisConnect(const char *ip, int port)
//redisContext不是线程安全的
typedef struct redisContext
{
    int err;  //错误标志,正确连接标志为0,出错时设置为非零常量
    char errstr[128];  //存放错误信息的字符串
    int fd;
    int flags;
    char *obuf;  //write buffer
    redisReader *reader;  //Protocol reader
} redisContext;

2.2 发送请求命令

第一个参数为连接数据库返回的值,剩余的是可变参数,类似printf。此函数的返回值是void*,但是一般会强制转换为redisReply类型,便于做进一步处理。

void* redisCommand(redisContext *c, const char *format...)

如果命令执行错误,返回值为NULL,redisContext的err字段被设置为非零常量。如果,错误发生,原先的redisContext就不能重复使用,需要重新建立一个新的连接。如果成功执行命令,则标准返回一个redisReply类型,该类型结构如下:

typedef struct redisReply
{
    int type;  //测试会收到什么样的返回
    long long integer;  //type是REDIS_REPLY_INTEGER类型,integer保存返回的值
    int len;  //保存str类型的长度
    char *str;  //type是REDIS_REPLY_ERROR和REDIS_REPLY_STRING,str保存返回值
    size_t elements;
    struct redisReply **element;  //返回多个元素以redisReply对象的形式存放
} redisReply;

通过redisReply结构体中的type变量可以确定命令执行的情况

#define REDIS_REPLY_STRING 1     //字符串
#define REDIS_REPLY_ARRAY 2      //数组,例如mget返回值
#define REDIS_REPLY_INTEGER 3    //数字类型
#define REDIS_REPLY_NIL 4        //空
#define REDIS_REPLY_STATUS 5     //状态,例如set成功返回的'ok'
#define REDIS_REPLY_ERROR 6      //执行失败

REDIS_REPLY_STATUS:

返回执行结果为状态的命令,比如set命令的返回值类型是REDIS_REPLY_STATUS,然后只有当返回信息是'OK'时,才表示该命令执行成功。可以通过reply->str得到文字信息,通过reply->len得到信息长度。

REDIS_REPLY_ERROR:

返回错误,错误信息可以通过reply->str得到文字信息,通过reply->len得到信息长度。

REDIS_REPLY_INTEGER:

返回整型标识,可以通过reply->integer变量得到类型为long long的值。

REDIS_REPLY_NIL:

返回nil对象,说明不存在要访问的数据。

REDIS_REPLY_STRING:

返回字符串标识,可以通过reply->str得到文字信息,通过reply->len得到信息长度。

REDIS_REPLY_ARRAY:

返回数据集标识,数据集中元素的数目可以通过reply->elements获得,每个元素是个redisReply对象,元素值可以通过reply->element[...index...]形式获得,用在获取多个数据结果的操作上。

2.3 释放资源

释放redisCommand执行后返回的redisReply所占用的内存

void freeReplyObject(void *reply)

释放redisConnect()所产生的连接

void redisFree(redisContext *c)

总结:一共4个API

//进行数据库的连接
redisContext* redisConnect(const char *ip, int port);
    
//对应命令的执行
void* redisCommand(redisContext *c, const char *format...);
    
//两个释放命令
void freeReplyObject(void *reply);

void redisFree(redisContext *c);

三 封装一个C++版本的HiRedis

MyRedis.h

MyRedis.cc

TestRedis.cc

编译运行前Redis数据库:

编译运行:

编译运行后Redis数据库:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1970314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2000-2022年 上市公司-投融资期限错配、短债长用、短贷长投(原始数据、计算代码、参考文献和最终计算结果)

上市公司在投融资过程中的管理决策对企业的财务稳定性和长期发展至关重要。投融资期限错配、短债长用和短贷长投是企业在资本运作中可能出现的问题&#xff0c;它们影响着企业的财务结构和风险管理。 投融资问题概述 投融资期限错配 指企业资产与债务的期限不匹配&#xff0…

ESG泡沫下的伊利:能否重拾消费者信任?

北京时间7月27日&#xff0c;第33届夏季奥林匹克运动会开幕式在法国巴黎举行&#xff0c;伊利作为中国体育代表团的主要赞助商&#xff0c;再次站在了聚光灯下。然而&#xff0c;在光鲜亮丽的营销背后&#xff0c;伊利正面临着前所未有的信任危机与业绩挑战。 近年来&#xff0…

关于IDEA git push 提交代码报committer 的邮件不是GitLab中的邮箱处理

1、报错截图 2、处理办法&#xff1a; 首先&#xff0c;‌需要检查GitLab的设置&#xff0c;‌确认登记的邮箱地址是否正确。‌ 如果发现邮箱不一致&#xff0c;‌需要更新Git的全局用户邮箱设置&#xff0c;‌以确保与GitLab中登记的邮箱保持一致。‌ 使用命令git config --g…

测试的基础概念

需求 需求的定义 用户需求&#xff1a;可以简单理解为甲方提出的需求&#xff0c;如果没有甲方&#xff0c;那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略。 软件需求&#xff1a;产品经理会把用户需求转化为软件需求&#xff08;写成一个文档&#xff09;…

软件技术(游戏软件开发方向)实训室解决方案

一、引言 随着数字娱乐产业的快速发展&#xff0c;游戏软件开发成为了一个热门领域。为满足市场对高质量游戏开发人才的需求&#xff0c;构建一套先进、全面、实战化的软件技术&#xff08;游戏软件开发方向&#xff09;实训室解决方案显得尤为重要。本方案旨在通过集成先进硬…

【守卫你的安全】基于高通QCS6490之AI智慧电子围篱展示方案

高通QCS6490是一款专为工业和商业物联网应用而设计的系统单芯片(SoC)&#xff0c;支援高阶物联网装置的Wi-Fi 6E连线&#xff0c;以及先进的摄像头、人工智能和计算功能&#xff0c;以实现低功耗下的强大性能。这款芯片结合高通Kryo™ 670 CPU和高通Hexagon处理器&#xff0c;具…

Redis——哈希

哈希 是一个字符类型的字段和值的映射表&#xff0c;简单来说就是一个键值对的集合&#xff0c;特别适合存储对象&#xff1b; 哈希的命令有 H 有关&#xff1b; 1. 添加键值对 HSET 2. 获取键值对 HGET 3. 判断键值对是否存在 HEXISTS 4. 获取所有键 HKEYS

python-----------MRO知识点笔记

视频来源&#xff1a;【【python】B站最细致的super()详解&#xff0c;一定有你不知道的知识&#xff01;】 https://www.bilibili.com/video/BV1FL4y1E7xK/?share_sourcecopy_web&vd_sourced59dcee6044af8fc880b46b581c3f58a MRO&#xff1a;方法解析顺序-------------M…

FastAPI 结合 JWT

文章目录 FastAPI 结合 JWT步骤安装步骤导入必要的模块设置配置和初始化应用创建数据模型实现辅助函数生成 JWT Token获取用户数据验证密码获取当前用户 用户登录获取 Token受保护的路由示例 所有代码测试获取 Token访问受保护的路由token正确token错误 总结注意 FastAPI 结合 …

【中项】系统集成项目管理工程师-第9章 项目管理概论-9.5 项目立项管理

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

RAGCache多级动态缓存管理系统,让RAG推理更高效|RAG论文分享

今天为大家分享北京大学和字节跳动联合发表的一篇关于加速RAG推理的论文&#xff1a; RAGCache: Efficient Knowledge Caching for Retrieval-Augmented Generation 论文地址&#xff1a;https://arxiv.org/abs/2404.12457 1.论文概述 Retrieval-Augmented Generation (RAG) …

聊聊Netty中几个重要的生命周期

写在文章开头 Netty内置了各种开箱即用的处理器&#xff0c;把握好处理器中几个比较重要的生命周期回调用助于我们编写出强大的网络通信程序&#xff0c;所以本文将基于一个简单的示例和源码介绍一下Netty中几个比较重要的生命周期函数&#xff0c;希望对你有帮助。 Hi&#x…

九州未来参编,《边缘计算产业发展研究报告》正式发布

日前&#xff0c;由中国通信标准化协会主办的第四届“云边协同”大会暨首届分布式算力论坛在北京成功举办。大会聚焦云边端分布式算力领域技术新突破、应用新场景以及发展新价值&#xff0c;搭建政产学研用交流对接平台&#xff0c;深化产业链协同开放合作。 会上&#xff0c;由…

Cookie-Monster:一款针对Web浏览器的安全分析与数据提取工具

关于Cookie-Monster Cookie-Monster是一款针对常见Web浏览器的安全分析与数据提取工具&#xff0c;该工具可以帮助广大研究人员提取并分析Edge、Chrome和Firefox浏览器中的Cookie数据。 Cookie-Monster适用于红队和蓝队成员&#xff0c;能够提取WebKit主密钥&#xff0c;找到具…

无监督学习与强化学习基础

就是训练数据无标签&#xff0c;算法自动对数据进行分类&#xff0c;听着很神奇&#xff0c;但学了机器学习以后&#xff0c;除了神经网络比较悬&#xff0c;对人像是个黑盒&#xff0c;别的都是基于数学的分类算法&#xff0c;无监督学习也不例外。 聚类—K-means算法 坐标轴…

Postman下载安装~用于springboot控制层测试

第一步&#xff1a;下载安装 方法1&#xff1a;在线下载 Postman API Platform 方法2&#xff1a;百度网盘 通过百度网盘分享的文件&#xff1a;Postman-win64-Setup 链接&#xff1a;https://pan.baidu.com/s/16nNfKvuNfM8z4kP1Ad-K2Q?pwdotxe 提取码&#xff1a;otxe -…

见证中国数据库的崛起:从追赶到引领的壮丽征程《三》

见证中国数据库的崛起&#xff1a;从追赶到引领的壮丽征程《三》 三、深度思考&#xff1a;中国数据库发展的经验与启示产学研用结合的创新模式应用驱动的创新路径人才培养的关键作用 【纪录片】中国数据库前世今生 在数字化潮流席卷全球的今天&#xff0c;数据库作为IT技术领域…

Java高级流

高级流 java将IO分为了两类 节点流:又称为"低级流" 特点:直接链接程序与另一端的"管道"&#xff0c;是真实读写数据的流IO一定是建立在节点流的基础上进行的。文件流就是典型的节点流(低级流) 处理流:又称为"高级流" 特点:不能独立存在&#x…

开源项目的发展趋势,以及参与开源项目可以获得的经验和成果,以及涉及到的注意事项

目录 一、当前开源项目的发展趋势 1. 全球化协作与社区增长 2. 多领域技术创新与迭代加速 3. 开放协作模式 4. 商业化与产业融合 5. 安全性与隐私保护 6. 跨界融合与生态构建 7. 政策支持 二、参与开源项目的经验和收获 1. 技术能力提升 2. 团队协作与沟通能力 3.领…

阿里微服务质量保障系列:异步通信模式以及测试分析

软件质量保障 所寫即所思|一个阿里质量人对测试的所感所悟。 1. 异步通信模式 最常见的方式就是异步消息通信。使用消息机制时,服务之间的通信采用异步交换消息的方式完成。基于消息机制的应 用程序通常使用消息代理,它充当服务之间的中介。另一种选择是使用无代理架构,通…