【4】cpp_redis hello world

C++单文件HTTP库cpp-httplib:从原理到实战构建轻量级网络服务 HTTP协议作为现代网络通信的基石,其客户端与服务器实现是构建Web服务、API接口和微服务架构的核心技术。理解HTTP协议栈的工作原理,有助于开发者选择高效、易用的网络库来快速实现业务需求。在C++生态中,cpp-httplib以其独特的单文件、零外部依赖设计脱颖而出,为开发者提供了开箱即用的HTTP/HTTPS服务与客户端能力。该库基于C++11标准库,内部采用多线程同步模型与线程池管理连接,在易用性与性能间取得了良好平衡。其技术价值在于极大降低了C++项目集成网络功能的复杂度,尤其适合快速原型开发、嵌 阅读详情

【1】cpp_redis (Windows C++ Redis客户端)(C++11实现)官方最新源码编译
正文如下

下面的代码展示的一个完整的cpp_redis发送字符串并取回字符串的完整过程。包括如下几个步骤:

1 启动Windowst通信库WSA

2 连接redis服务端

3 发送数据给redis

4接收数据给redis

5 停止Windows通讯库WSA

6 cpp_redis通过异常来做错误处理:所以一个业务模块如果只处理一个问题的话,应该把异常放到外围,内部各种操作,最后一起处理异常,这样代码比较好理解。

7 所有通信的成功与不成功都应该依赖于异常

8 所有的业务数据合理与不合理都应该依赖于is_###()来判断


代码(Hello World):

#include <cpp_redis/cpp_redis>
#include <iostream>
#include "TestRedis.h"
using namespace std;

#ifdef _WIN32
#include <Winsock2.h>
#endif /* _WIN32 */
#pragma comment( lib, "ws2_32.lib")//最好的方法是包含在项目属性中,因为那样可以根据Debug、Release、x86、x64来区分。这里仅仅是为了突出引用了这个库写在这里 

bool StartWSA(void)
{
	//! Windows netword DLL init
	WORD version = MAKEWORD(2, 2);
	WSADATA data;

	if (WSAStartup(version, &data) != 0)
	{
		std::cerr << "WSAStartup() failure" << std::endl;
		return false;
	}
	return true;
}
void StopWSA(void)
{
	WSACleanup();
}

int main(void) 
{
	//启动Windows网络通信库
	if (!StartWSA())
	{
		return -1;
	}
	try
	{
		//! Enable logging
		cpp_redis::active_logger = std::unique_ptr<cpp_redis::logger>(new cpp_redis::logger);
		cpp_redis::redis_client client;
		client.connect("127.0.0.1", 6379, [](cpp_redis::redis_client&)
		{
			std::cout << "client disconnected (disconnection handler)" << std::endl;
		});

		client.set("hello", "Hello World!");
		client.get("hello", [](cpp_redis::reply& reply)
		{
			std::cout << "get hello: " << reply << std::endl;
		});

		// synchronous commit, no timeout
		client.sync_commit();
	}
	catch (cpp_redis::redis_error e)
	{
		std::cout << e.what() << endl;
	}


	//关闭Windows网络通信库
	StopWSA();

  return 0;
}

输出:我们给redis不同的外部环境,看看跑出来的效果

(1)关闭redis服务:连接失败被捕获并显示出来


(2)启动redis服务:执行效果


(3)如果我们发送的hello,取的时候写成了首字母大写Hello会输出:


之所以会输出(nil)是因为reply的输出操作符重载中定义的:

  case cpp_redis::reply::type::null:
    os << std::string("(nil)");
    break;

客户端查看:


下篇文章重点讲一下返回值的结构reply

国产麒麟系统部署llama.cpp与Hermes:AI本地化推理实践指南 大语言模型本地化部署是当前企业AI应用的重要方向,其核心原理是通过优化后的推理引擎在自有服务器上运行模型。从技术价值看,这种方式既能保障数据安全,又能降低API调用成本。在实际应用场景中,国产化服务器环境部署需要重点关注环境兼容性和性能优化。以银河麒麟操作系统搭配llama.cpp推理引擎为例,编译工具链适配和BLAS库加速是关键环节。本文基于hermes智能体框架和模型量化等热词,详细解析在Kylin-Server-V10-SP3-2403系统上构建稳定AI推理环境的具体实践方案,涵盖从基础环境验证到生产 阅读详情

相关推荐

C++ RESTful API 与 Nginx 集成:构建高性能后端服务的完整实践

在 C++ 项目中,构建一个高性能、可维护的后端服务是许多开发者追求的目标。这类项目通常不仅需要处理复杂的业务逻辑,还需要对外提供稳定、高效的 API 接口,并能够安全、快速地分发前端静态资源。结合常见的工程实践,一个典型的 C++ 后端项目架构可能涉及 RESTful API 设计、幂等性保障、Nginx 作为反向代理和静态资源服务器等多个环节。本文将围绕如何构建这样一个集成的 C++ 后端服务展开,从核心概念理解、环境搭建、关键模块实现,到使用 Nginx 进行部署和优化,提供一个完整的、可复现的实践指

weixin_30596343的博客 371

C/C++编程:redis的cpp库

redis官方推荐的CPP库 hiredis 这里我们只用了hiredis 使用方法如下: linux安装Redis4 安装redis自带的hiredis: # cd {redis-src} # cd deps/hiredis/ # make # make install mkdir -p /usr/local/include/hiredis /usr/local/include/hiredis/adapters /usr/local/lib cp -pPR hiredis.h async.h rea

OceanStar的博客 8085

C语言入门:从Hello World到指针与内存管理的核心概念解析

编程语言是计算机科学的基础工具,其核心在于将人类逻辑转化为机器可执行的指令。C语言作为一门接近底层的系统编程语言,其设计哲学直接映射了计算机的硬件架构和工作原理。通过学习C语言,开发者能够深入理解程序在内存中的存储方式、CPU的指令执行流程以及操作系统与应用程序的交互机制,这种底层认知是构建高效、可靠软件系统的技术基石。在工程实践中,掌握变量与数据类型、控制流程、函数模块化等基础概念,特别是理解指针与内存管理的本质,是进行系统编程、嵌入式开发和性能优化的关键。本文以C语言入门为切入点,系统讲解从程序结构、编

weixin_34150830的博客 389

conan入门(十九):封装第三方开源库cpp_redis示例

conan: 封装第三方开源库cpp_redis示例 在我的之前关于conan系列博客中,已经介绍过如何引用Conan中央仓库(conan-center)预定义的第三库(《conan入门(五):conan 交叉编译引用第三方库示例》),以及如何将自己的项目封装为Conan包以供第三方引用(《conan入门(七):将自己的项目生成conan包》)。 但是这个世界实际是复杂的,虽然Conan中央仓库已经收录了上千个常用的开源第三方库,但仍然有更多的第三库并没被Conan中央仓库收录,你不能指望你所需要的任何第三

10km的专栏 3139

cpp_redis:C ++ 11轻量级Redis客户端:异步,线程安全,无依赖项,流水线,多平台-不再维护-请检查https:github.comcpp-rediscpp_redis

重要 请注意,该库不再维护。 有关新更新,请参阅以下分支 我已经对该库进行了3年以上的维护,但是我没有足够的时间来提供可靠的支持和持续的开发。 任何现有的或新的问题将不予处理,我不保证合并任何新的请求请求。 如果有人愿意接管此项目,请随时分叉此项目,并给我发消息以在此自述文件中添加指向您的分叉的链接。 cpp_redis cpp_redis是C ++ 11异步多平台轻量级Redis客户端,支持同步操作,流水线,标记和高可用性。 需求 cpp_redis没有依赖项。 它唯一的要求是C++11 。 它没有网络模块,因此您可以自由配置自己的模块,也可以使用默认模块( ) 例 cpp_redis :: client cpp_redis::client client; client.connect(); client.set( " hello " , " 42 " ); client.get( " hello " , [](cpp_redis::reply& reply) { std::cout << reply << std::endl; }); // ! also sup

cpp_redis:C ++ 11轻量级Redis客户端:异步,线程安全,无依赖项,流水线,多平台

cpp_redis cpp_redis是C ++ 11异步多平台轻量级Redis客户端,支持同步操作,流水线,标记和高可用性。 需求 cpp_redis没有依赖项。 它唯一的要求是C++11 。 它没有网络模块,因此您可以自由配置自己的模块,也可以使用默认模块( ) 例 cpp_redis :: client cpp_redis::client client; client.connect(); client.set( " hello " , " 42 " ); client.get( " hello " , [](cpp_redis::reply& reply) { std::cout << reply> get_reply = client.get("hello"); client.sync_commit(); // ! or client.commit(); for asynchronous call c

【亲测免费】 探秘高效C++ Redis客户端:cpp_redis

在开发高并发、实时性的网络应用时,Redis作为一个高性能的键值存储系统,通常被广泛采用。然而,选择一个合适且高效的客户端库至关重要。今天,我们要介绍的是[cpp_redis](https),一个专为C++设计的轻量级、异步、多线程的Redis客户端。 ## 项目简介 cpp_redis是GitHub上的开源项目,其目标是提供一个简单易用、灵活且性能卓越的Redis客户端。它利用了C++11和...

gitblog_00013的博客 1076

Clarity 3D Layout

Clarity 3D Layout Clarity 3D layout是3D 全波电磁场模型提取工具,它可以导入已经设计好的PCB文件也可以直接在Clarity 3D layout创建版图进行3D 全波电磁场模型提取。

m0_53280471的博客 5484

C++ cppredis 使用

教程 https://blog.youkuaiyun.com/calmreason/article/details/54881014 cpp_redis采用延迟执行的方式,get set 都是把数据追加到client的成员buffer里,等commit的时候一起执行。 client.connect("127.0.0.1", 6379, [](cpp_redis::redis_client&) { std::cout << "client disconnected (dis...

繁星点点~ 2279

【LaTeX PPT模板集】Beamer主题与配色使用教程

【LaTeX PPT模板集】Beamer主题与配色使用教程

Xminyang的博客 1万+

EndNote全文检索实战:如何快速配置学校图书馆资源并精准查找文献

本文详细介绍了EndNote全文检索功能的实战配置方法,核心在于通过正确设置OpenURL链接解析器,无缝对接学校图书馆资源,实现一键精准获取文献全文。文章提供了从理解机制、四步配置法到进阶技巧的完整指南,帮助科研人员高效管理海量PDF,构建个人知识体系,大幅提升文献调研与写作效率。

weixin_29228781的博客 280

cpp_redis源码架构解析:深入理解现代C++ Redis客户端设计模式

cpp_redis是一个基于C++11的异步多平台轻量级Redis客户端库,它支持同步操作、流水线、哨兵和高可用性。这个现代化的C++ Redis客户端库设计精巧,采用了多种现代C++设计模式,为开发者提供了高效、线程安全的Redis访问能力。本文将深入解析cpp_redis的源码架构,帮助您理解其核心设计思想和实现原理。 ## 架构概览:分层设计与模块化 cpp_redis采用了清晰的分层架

gitblog_01072的博客 1007

从零构建SOEM主站:基于STM32的EtherCAT伺服控制实战指南

本文详细介绍了如何从零构建基于STM32的SOEM主站系统,实现EtherCAT伺服电机的高精度控制。通过硬件选型、SOEM协议栈移植、PDO/SDO配置优化等实战步骤,帮助开发者掌握工业自动化中的关键运动控制技术,特别适用于23位编码器伺服电机的应用场景。

weixin_29186249的博客 666

Redis入门 Hello World

本系列教程主要来自于官网入门教程的翻译,然后自己进行了部分的修改与实验,内容仅供参考。 “Hello world” of Redis 前言:随着web2.0的进一步发展,网民的生产力进一步提升,存储总量开始增加。 此时虽然仍然是读多写少的模式,但写入量已经大大提升。 原有的缓存技术不能缓解写入压力,而且原有的空间也受硬盘限制,因此开始出现分库分表,实现读写分离。 集中模式的数据库就

cuipeng的博客 1748

AMDGPU驱动中Doorbell与Event机制简要对比

摘要:AMDGpu驱动中,Doorbell和Event是两种异步通知机制。Doorbell是CPU→GPU的单向硬件通知,通过写MMIO寄存器触发GPU拉取任务,延迟低且无需内核介入,适用于队列任务提交。Event是GPU→CPU的双向同步通知,基于中断和内核事件对象,支持阻塞等待,用于任务完成或异常上报。核心区别在于方向、用途和实现方式:Doorbell侧重任务触发,Event侧重状态反馈。两者配合实现高效的任务下发与完成通知流程。

图形/计算GPU的驱动与虚拟化技术分享园地 1859

[PCIe5.0] 2.2.7.1 TPH Rules

TPH 机制通过硬件提示优化数据流,适用于高性能计算和存储场景。

系统固件工程师 349

Redis SCAN命令原理与C++客户端集成实战指南

在分布式缓存和内存数据库领域,高效、安全地遍历海量键(Key)是核心需求。传统KEYS命令的阻塞式遍历在生产环境中可能导致服务中断,因此Redis引入了基于游标的增量迭代器SCAN命令。其工作原理是将全量遍历分解为多次非阻塞的小批量操作,通过游标记录状态,并支持MATCH模式过滤和COUNT数量提示,在保证服务可用性的同时完成数据遍历。这一机制对于大数据量下的运维监控、数据迁移和批量操作具有重要技术价值。结合RESP(Redis序列化协议)这一二进制安全、高效的通信基础,开发者可以深入理解客户端与服务端的交

weixin_33675507的博客 332

Xilinx FPGA平台GTX简易使用教程(四)GTX IP核配置教程

干货来了,GTX IP核配置,搬砖全靠它~~

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

鸿蒙开发1--Hello World(开发环境及IDE)

基于Kafka+ElasticSearch+MongoDB+Redis+XXL-Job日志分析系统(学习)配置即权限:从传统开源 RBAC 框架到 SPARK 的六层数据护盾,告别改权限就要改代码的魔咒。c++&MFC 用boost.asio库写的串口功能,包含发送、异步接收、打开、重连、关闭功能。Windows下NVM保姆级指南:安装、切换版本、指定路径+淘宝镜像配置,一次搞定!第2集:技术选型的智慧:Flask vs FastAPI,GLM-4 vs GPT。

slngX_357zp的博客 333

cesium 实时轨迹

运用cesium中model和polyline添加模型和轨迹线,用CallbackProperty方法来实时改变经纬度。

God's asylum的博客 1964

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C++网络编程实战:cpp-httplib构建HTTP客户端与服务端模型

HTTP协议作为现代网络通信的基石,其客户端-服务器模型支撑着Web服务、API接口和微服务架构。理解HTTP请求-响应机制是网络编程的核心,涉及Socket通信、协议解析和并发处理等底层技术。在C++生态中,cpp-httplib以其单头文件、零依赖的设计,为开发者提供了轻量高效的HTTP实现方案。该库封装了网络通信细节,支持同步与异步调用,简化了服务端路由注册和客户端请求处理,特别适合快速构建本地API服务、微服务原型或嵌入式Web接口。通过合理处理网络热词中常见的unexpected status 5

weixin_33743248的博客 400

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Kubernetes实践(2)--hello world 示例

本文所说的Hello world是一个web留言板应用,并且是基于PHP+Redis的两层分布式架构的web应用,前端PHP web网站通过访问后端Redis数据库完成用户留言的查询和添加功能,具备读写分离能力,留言板内容是从redis中查询到的,首页中添加刘潭并提交之后留言会被添加到redis中。Redis层采用一个Master与两个salve,Master负责写操作,slave负责读操作,PHP

顽石的专栏 5295

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C++高性能HTTP服务:cpp-httplib异步模型原理与实战优化

在网络编程中,I/O多路复用和事件驱动是构建高并发服务的核心技术。其原理在于通过单个或少量线程监控大量文件描述符的状态变化,当I/O就绪时进行相应处理,从而避免线程因等待I/O而阻塞。这种技术能极大提升资源利用率,解决C10K甚至C100K问题,对于API网关、实时通信等I/O密集型场景价值显著。具体到C++的cpp-httplib库,其异步模型正是基于此理念,通过非阻塞I/O结合工作线程池,将网络事件处理与业务逻辑解耦。本文聚焦于**异步非阻塞模型**和**线程池**这两个关键热词,深入解析如何将同步思维

weixin_33770878的博客 347

零基础C++自学指南:从环境搭建到项目实战的完整路径

编程语言学习是掌握计算机科学基础的重要环节,其核心在于理解如何将人类逻辑转化为机器可执行的指令。C++作为一种支持面向对象、泛型编程和底层内存操作的语言,其学习路径需要从基础语法和程序结构入手,逐步深入到核心概念与内存管理。掌握指针、引用、类与对象等概念,是理解程序在计算机中如何运行的关键。这些知识不仅有助于编写高效、可靠的代码,更是进行系统软件开发、游戏引擎构建和高性能计算等领域的基石。对于初学者而言,一个清晰的学习路径和有效的练习方法至关重要。本文基于实际开发经验,重点围绕**环境搭建**和**项目实战

weixin_30781775的博客 436

【Redis】从零开始的 Redis 学习

本文主要讲解了 redis 的安装和基础使用,包括全局指令和常见数据类型,最后使用 c++ 自定义 redis 客户端连接和使用 redis 服务器。

x_p96484685433的博客 289

在华为鸿蒙OS上尝鲜,我的第一个“hello world”

点击上方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!目前,鸿蒙操作系统( OpenHarmony)已在Gitee上开源,并宣布把OpenHarmony 捐...

民工哥的博客 2959
上一篇: 【3】RedisClient 数据浏览神器(支持对Redis数据进行界面化操作)
下一篇: 【5】cpp_redis reply
C++程序员Carea
博客等级 码龄18年 1590粉丝 878原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值