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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 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

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4天前
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
18 6
|
4天前
|
安全 C++
超级好用的C++实用库之环形内存池
超级好用的C++实用库之环形内存池
19 5
|
4天前
|
缓存 网络协议 Linux
超级好用的C++实用库之套接字
超级好用的C++实用库之套接字
19 1
|
4天前
|
存储 算法 安全
超级好用的C++实用库之sha256算法
超级好用的C++实用库之sha256算法
10 1
|
4天前
|
存储 算法 安全
超级好用的C++实用库之国密sm4算法
超级好用的C++实用库之国密sm4算法
14 0
|
4天前
|
网络协议 Linux C++
超级好用的C++实用库之网络
超级好用的C++实用库之网络
13 0
|
4天前
|
算法 安全 Serverless
超级好用的C++实用库之国密sm3算法
超级好用的C++实用库之国密sm3算法
10 0
|
4天前
|
算法 数据安全/隐私保护 C++
超级好用的C++实用库之MD5信息摘要算法
超级好用的C++实用库之MD5信息摘要算法
11 0
|
4天前
|
监控 Linux API
超级好用的C++实用库之服务包装类
超级好用的C++实用库之服务包装类
|
4天前
|
存储 运维 监控
超级好用的C++实用库之日志类
超级好用的C++实用库之日志类
11 0
下一篇
无影云桌面