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

【redis】redis和hiredis的基本使用

总结:

介绍了一下redis和hiredis的安装步骤,用一个简单的demo演示了使用redis的基本过程。

启动redis步骤

1、下载redis:https://github.com/redis/redis

2、编译命令:make

3、编译产物:libredis.a(静态库)和可执行文件( redis-server

4、运行redis服务:./redis-server

使用hiredis(redis客户端)连接redis

1、下载hiredis:https://github.com/redis/hiredis/tree/v1.3.0

2、编译命令:

make
sudo make install
sudo ldconfig

3、编写一个简单的demo

#include <iostream>
#include <string>
extern "C" {#include <hiredis/hiredis.h>
}int main() {// 连接 Redis 服务器redisContext* context = redisConnect("127.0.0.1", 6379);if (context == nullptr || context->err) {if (context) {std::cerr << "连接错误: " << context->errstr << std::endl;redisFree(context);} else {std::cerr << "无法分配 Redis 连接上下文" << std::endl;}return 1;}std::cout << "成功连接到 Redis 服务器" << std::endl;// 执行 SET 命令redisReply* reply = static_cast<redisReply*>(redisCommand(context, "SET mykey %s", "Hello, Redis!"));if (reply == nullptr) {std::cerr << "执行 SET 命令失败" << std::endl;redisFree(context);return 1;}// 检查 SET 命令结果if (reply->type == REDIS_REPLY_STATUS && std::string(reply->str) == "OK") {std::cout << "SET 命令执行成功" << std::endl;} else {std::cerr << "SET 命令执行失败: " << reply->str << std::endl;}freeReplyObject(reply);// 执行 GET 命令reply = static_cast<redisReply*>(redisCommand(context, "GET mykey"));if (reply == nullptr) {std::cerr << "执行 GET 命令失败" << std::endl;redisFree(context);return 1;}// 检查 GET 命令结果if (reply->type == REDIS_REPLY_STRING) {std::cout << "GET 结果: " << reply->str << std::endl;} else {std::cerr << "GET 命令执行失败,非预期的回复类型" << std::endl;}freeReplyObject(reply);// 执行 INCR 命令(演示数值操作)reply = static_cast<redisReply*>(redisCommand(context, "INCR counter"));if (reply == nullptr) {std::cerr << "执行 INCR 命令失败" << std::endl;redisFree(context);return 1;}// 检查 INCR 命令结果(整数类型)if (reply->type == REDIS_REPLY_INTEGER) {std::cout << "INCR 结果: " << reply->integer << std::endl;}freeReplyObject(reply);// 释放连接redisFree(context);std::cout << "已断开与 Redis 服务器的连接" << std::endl;return 0;
}

代码说明:

  • 连接部分:使用 redisConnect 连接到本地 Redis 服务器(默认ip地址是127.0.0.1,端口6379)
  • 错误处理:检查连接是否成功,并处理可能的错误
  • 命令执行:使用 redisCommand 执行 Redis 命令,如 SET、GET、INCR
  • 结果解析:根据 redisReply 的类型判断命令执行结果
  • 资源释放:使用 freeReplyObject 释放回复对象,使用 redisFree 释放连接

4、编译:g++ -o main main.cpp -lhiredis

5、运行程序:./redis_demo

6、日志输出:

成功连接到 Redis 服务器
SET 命令执行成功
GET 结果: Hello, Redis!
INCR 结果: 1
已断开与 Redis 服务器的连接
http://www.lryc.cn/news/2386337.html

相关文章:

  • 大模型时代,Python 近红外光谱与 Transformer 模型:学习的必要性探究
  • 产品经理常用术语大全
  • 梯度优化提示词:精准引导AI分类
  • AUTOSAR 运行时环境 (RTE)
  • Bolt.new:重塑 Web 开发格局的 AI 利器
  • RK3588 RKNN ResNet50推理测试
  • SQLMesh 宏操作符详解:提升 SQL 查询的灵活性与效率
  • leetcode513.找树左下角的值:递归深度优先搜索中的最左节点追踪之道
  • 基于Flink的数据中台管理平台
  • AI-Ready TapData:如何基于 MCP 协构建企业级 AI 实时数据中枢?(含教程)
  • Spring Boot 登录实现:JWT 与 Session 全面对比与实战讲解
  • 【HTML-5】HTML 实体:完整指南与最佳实践
  • SpringBoot 项目实现操作日志的记录(使用 AOP 注解模式)
  • AI|Java开发 IntelliJ IDEA中接入本地部署的deepseek方法
  • 【疑难杂症】Vue前端下载文件无法打开 已解决
  • 【1——Android端添加隐私协议(unity)1/3】
  • Linux之概述和安装vm虚拟机
  • 深入理解 Linux 的 set、env 和 printenv 命令
  • LeetCode热题100--19.删除链表的倒数第N个结点--中等
  • 开发AR导航助手:ARKit+Unity+Mapbox全流程实战教程
  • git学习与使用(远程仓库、分支、工作流)
  • 嵌入式预处理链接脚本lds和map文件
  • 9. Spring AI 各版本的详细功能与发布时间整理
  • 《Android 应用开发基础教程》——第十四章:Android 多线程编程与异步任务机制(Handler、AsyncTask、线程池等)
  • Apache 高级配置实战:从连接保持到日志分析的完整指南
  • 开源 OIDC(OpenID Connect)身份提供方(IdP)、iam选型
  • Android OkHttp控制链:深入理解网络请求的流程管理
  • 【JVM 01-引言入门篇】
  • Pandas数据规整
  • ThreadLocal线程本地变量在dubbo服务使用时候遇到的一个坑