zoukankan      html  css  js  c++  java
  • redis数据存储--C++连接redis

    一、下载的是Redis Windows版本;下载地址:https://github.com/microsoftarchive/redis;解压到:E:Software edis-3.0;

    二、用VS打开项目:

      1. 打开文件E:Software edis-3.0msvs;点击RedisServer.sln,用VS打开;所有警告点击确定,如下图:这里使用的是VS2015

        

      2. 运行所有解决方案:

        加载项目后如图:

        

         右击解决方案,选择重新生成解决方案,解决方案生成成功

        

      3. 打开文件E:Software edis-3.0msvsx64Debug,查看生成的lib和exe

        

     三、 新建项目TestRedis

      1. 添加包含目录,点击TestRedis项目,右键属性->C/C++->常规->附加包含目录,输入以下两个目录,以“;”号分隔开:

        A、添加Redis库原码, 路径:E:Software edis-3.0src;

        B、添加HiRedis库原码,路径:E:Software edis-3.0depshiredis;

      2. 添加附加依赖库:hiredis.lib,Win32_Interop.lib;点击TestRedis项目,右键属性->链接器->输入->附加依赖项输入库所在目录;

      3.重新启动Redis-server, 打开CMD,导航到Redis-server目录,输入,如下

        

    四,添加TestRedis项目,尝试连接

    #include "stdafx.h"
    #include <Windows.h>
    #include <hiredis.h>
    
    #pragma comment(lib, "Win32_Interop.lib")
    #pragma comment(lib, "hiredis.lib")
    
    int main()
    {
        //redis默认监听端口为6387 可以再配置文件中修改 
        redisContext* pRedisContext = redisConnect("127.0.0.1", 6379);
        if (NULL == pRedisContext || pRedisContext->err)
        {
            printf("%s ", pRedisContext->errstr);
            printf("Connect to redis server failed ");
            return -1;
        }

        //输入Redis密码
        const char *pszRedisPwd = "123456";
        redisReply *pRedisReply = (redisReply*)redisCommand(pRedisContext, "AUTH %s", pszRedisPwd);
        if (NULL != pRedisReply)
        {
            freeReplyObject(pRedisReply);
        }
        //用get命令获取数据
        char szRedisBuff[256] = { 0 };
        sprintf_s(szRedisBuff, "GET %s", "name");
        pRedisReply = (redisReply*)redisCommand(pRedisContext, szRedisBuff);
        if (NULL == pRedisReply)
        {
            printf("Get data Error!");
            return -1;
        }

        if (NULL == pRedisReply->str)
        {
            freeReplyObject(pRedisReply);
            return -1;
        }

        string strRes(pRedisReply->str);
        freeReplyObject(pRedisReply);

        //向Redis写入数据
        pRedisReply = (redisReply *)redisCommand(pRedisContext, "SET keyName huantest");
        if (NULL != pRedisReply)
        {
            freeReplyObject(pRedisReply);
        }

        return 0; }

     注意:Redis Windows截止作者使用的时间:

      1. 最新版本为 3.0, 3.0的Window版本在使用redisConnectWithTimeout的方法时会出现连接错误:报磁盘空间不足;

      2. 如果vs环境下没有库文件ShLwApi.Lib,AdvAPI32.Lib,会报错;这两个库文件在C盘下,请自行搜索;

        

  • 相关阅读:
    ul做导航栏
    论布局,bfc,margin塌陷和合并,经典bug
    mon-hom
    新浪下拉菜单模仿
    JQ筛选方法,筛选父子元素
    JQuery筛选选择器
    JQuery隐式迭代
    python 和 C# DES加密
    交互设计[1]--设计心理学
    javascript学习(9)——[设计模式]单例
  • 原文地址:https://www.cnblogs.com/anlia/p/11713424.html
Copyright © 2011-2022 走看看