cpp_redis (Windows C++ Redis客户端静态库,C++11实现)源码编译及使用

简介: cpp_redis (Windows C++ Redis客户端静态库,C++11实现)源码编译及使用

一、环境准备


win7,VS2015


https://github.com/Cylix/cpp_redis   v4.3.1


https://github.com/Cylix/tacopie      v3.2.0


https://cylix.github.io/cpp_redis/html/classcpp__redis_1_1client.html


把cpp_redis和tacopie的源码下载之后,把tacopie源码解压到路径


C:\Users\Administrator\Documents\Visual Studio 2015\Projects\cpp_redis-4.3.1\tacopie\


vs2015打开cpp_redis的工程,


C:\Users\Administrator\Documents\Visual Studio 2015\Projects\cpp_redis-4.3.1\msvc15\cpp_redis.sln


debug和release分别编译,最终会生成debug和release版本的lib库:


tacopie.lib


cpp_redis.lib


两个文件都很大,分别是10MB和50MB左右。。。




二、提取出头文件和静态库文件,分别新建文件夹includes和libs


1、把C:\Users\Administrator\Documents\Visual Studio 2015\Projects\cpp_redis-4.3.1\includes\cpp_redis和C:\Users\Administrator\Documents\Visual Studio 2015\Projects\cpp_redis-4.3.1\tacopie\includes\tacopie两个文件夹都拷贝到includes


--includes


   --cpp_redis


   --tacopie


2、把debug和release的tacopie.lib和cpp_redis.lib拷贝进入libs


--libs


    --debug


            --tacopie.lib


            --cpp_redis.lib


    --release


            --tacopie.lib


            --cpp_redis.lib



三、新建win32工程,实测


测试源码主要参考了,https://github.com/Cylix/cpp_redis/tree/master/examples/cpp_redis_client.cpp


本人添加了静态库的指向和redis auth的校验


另外,VS2015工程属性,配置属性,C/C++,附加包含目录写入“..\includes”

// redisclientwin32.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <cpp_redis/cpp_redis>  
#include <iostream>  
//#include <algorithm>
//#include <iterator>
#ifdef _WIN32  
#include <Winsock2.h>  
#endif /* _WIN32 */  
#ifdef _DEBUG
#pragma comment(lib, "../libs/debug/tacopie.lib")
#pragma comment(lib, "../libs/debug/cpp_redis.lib")
#else
#pragma comment(lib, "../libs/release/tacopie.lib")
#pragma comment(lib, "../libs/release/cpp_redis.lib")
#endif
int main()
{
#ifdef _WIN32
  //! Windows netword DLL init
  WORD version = MAKEWORD(2, 2);
  WSADATA data;
  if (WSAStartup(version, &data) != 0) {
    std::cerr << "WSAStartup() failure" << std::endl;
    return -1;
  }
#endif /* _WIN32 */
  //! Enable logging
  cpp_redis::active_logger = std::unique_ptr<cpp_redis::logger>(new cpp_redis::logger);
  cpp_redis::client client;
  client.connect("172.16.6.138", 6379, [](const std::string& host, std::size_t port, cpp_redis::client::connect_state status) {
    if (status == cpp_redis::client::connect_state::dropped) {
      std::cout << "client disconnected from " << host << ":" << port << std::endl;
    }
  });
  // auth,password
  client.auth("123456", [](cpp_redis::reply& reply) {
    std::cout << "auth info: " << reply << std::endl;
    // if (reply.is_string())
    //   do_something_with_string(reply.as_string())
  });
  // same as client.send({ "SET", "hello", "42" }, ...)
  client.set("hello", "42", [](cpp_redis::reply& reply) {
    std::cout << "set hello 42: " << reply << std::endl;
    // if (reply.is_string())
    //   do_something_with_string(reply.as_string())
  });
  // same as client.send({ "DECRBY", "hello", 12 }, ...)
  client.decrby("hello", 12, [](cpp_redis::reply& reply) {
    std::cout << "decrby hello 12: " << reply << std::endl;
    // if (reply.is_integer())
    //   do_something_with_integer(reply.as_integer())
  });
  // same as client.send({ "GET", "hello" }, ...)
  client.get("hello", [](cpp_redis::reply& reply) {
    std::cout << "get hello: " << reply << std::endl;
    // if (reply.is_string())
    //   do_something_with_string(reply.as_string())
  });
  // commands are pipelined and only sent when client.commit() is called
  // client.commit();
  // synchronous commit, no timeout
  client.sync_commit();
  // synchronous commit, timeout
  // client.sync_commit(std::chrono::milliseconds(100));
#ifdef _WIN32
  WSACleanup();
#endif /* _WIN32 */
    return 0;
}

完整源码下载:https://download.csdn.net/download/libaineu2004/10290808

相关文章
|
NoSQL 网络协议 Linux
Redis的实现一:c、c++的网络通信编程技术,先实现server和client的通信
本文介绍了使用C/C++进行网络通信编程的基础知识,包括创建socket、设置套接字选项、绑定地址、监听连接以及循环接受和处理客户端请求的基本步骤。
248 6
|
6月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
266 11
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
475 12
|
存储 机器学习/深度学习 编译器
【C++终极篇】C++11:编程新纪元的神秘力量揭秘
【C++终极篇】C++11:编程新纪元的神秘力量揭秘
|
人工智能 数据处理 C#
AI Dev Gallery:微软开源 Windows AI 模型本地运行工具包和示例库,助理开发者快速集成 AI 功能
微软推出的AI Dev Gallery,为Windows开发者提供开源AI工具包和示例库,支持本地运行AI模型,提升开发效率。
984 13
|
存储 监控 NoSQL
Redis的实现二: c、c++的网络通信编程技术,让服务器处理多个client
本文讨论了在C/C++中实现服务器处理多个客户端的技术,重点介绍了事件循环和非阻塞IO的概念,以及如何在Linux上使用epoll来高效地监控和管理多个文件描述符。
277 1
|
NoSQL API Redis
如何使用 C++ 开发 Redis 模块
如何使用 C++ 开发 Redis 模块
|
NoSQL Redis C++
Redis的实现五:二叉堆的数据结构和TTL、c,c++的实现
这篇文章详细探讨了二叉堆的数据结构及其在C和C++中的实现,特别强调了二叉堆在Redis中实现TTL(生存时间)功能的重要性,并通过代码示例展示了如何在Redis中使用二叉堆来管理键的过期时间。
235 0
|
数据安全/隐私保护 C++ 开发工具
Windows10 VS2017 C++使用crypto++库加密解密(AES)
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/85262234 参考文章:https://blog.
6204 0
|
6月前
|
安全 数据安全/隐私保护 虚拟化
Windows Server 2022 中文版、英文版下载 (2025 年 10 月更新)
Windows Server 2022 中文版、英文版下载 (2025 年 10 月更新)
1718 2
Windows Server 2022 中文版、英文版下载 (2025 年 10 月更新)