编译环境,32位windows7,VS2013

获取redis windows版

MS Open Technologies 官方主页

GitHub上的MSOpenTech/redis项目地址

编译 redis:

1.解压到redis(文件夹名字自定义),打开msvs用vs 打开RedisServer.sln项目,编译全部。

2.编译完成后在DUBUG里面找5个EXE文件,分别是redis-benchmark.exe,redis-check-aof.exe,redis-check-dump.exe,redis-cli.exe,redis-server.exe

把5个EXE复制到redis的根目录下即可(与bin文件夹同目录),它们的作用如下:

redis-server:Redis服务器的daemon启动程序

redis-cli:Redis命令行操作工具。也可以用telnet根据其纯文本协议来操作

redis-benchmark:Redis性能测试工具,测试Redis在当前系统下的读写性能

redis-check-aof:数据修复

redis-check-dump:检查导出工具

3.修改redis配置文件,根目录下的redis.conf文件

参数介绍:

daemonize:是否以后台daemon方式运行

pidfile:pid文件位置

port:监听的端口号

timeout:请求超时时间

loglevel:log信息级别

logfile:log文件位置

databases:开启数据库的数量

save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。

rdbcompression:是否使用压缩

dbfilename:数据快照文件名(只是文件名,不包括目录)

dir:数据快照的保存目录(这个是目录)

appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。

appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)

4.启动redis

进入redis目录后 开启服务  (注意加上redis.conf)

redis-server.exe redis.conf 

这个窗口要保持开启  关闭时redis服务会自动关闭redis会自动保存数据到硬盘

5.测试使用

另外开启一个命令行窗口 进入redis目录下 (注意修改自己的ip)

1.redis-cli.exe -h 192.168.10.61 -p 6379 

编译 hiredis(其实上面编译全部reids的时候已经编译过的):

1.编译两个lib: hiredis.lib和Win32_Interop.lib

打开从GitHub上clone下来的文件夹,打开里面的msvs文件夹中的RedisServer.sln

从解决方案资源管理器窗口编译hiredis工程和Win32_Interop工程(调试的时候请在debug模式下编译这两个库),此时便会在Debug/Release文件夹下生成这两个工程编译的lib

2.在自己的工程中使用

(1)添加上一步编译的这两个lib到工程中

(2)复制GItHub redis项目文件夹中src/Win32_Interop下所有头文件

(3)以及deps/hiredis下所有头文件(其中fmacros.h用src文件夹下的fmacros.h文件替代)

(4)再复制src/Win32_Interop/win32fixes.c到自己的工程目录,包含到工程文件中

(5)调整各个文件include的路径

(6)示例代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#include <hiredis.h>
#define NO_QFORKIMPL //这一行必须加才能正常使用
#include <Win32_Interop\win32fixes.h>
#pragma comment(lib,"hiredis.lib")
#pragma comment(lib,"Win32_Interop.lib")int main()
{unsigned int j;redisContext *c;redisReply *reply;struct timeval timeout = { 1, 500000 }; // 1.5 secondsc = redisConnectWithTimeout((char*)"127.0.0.1", 6379, timeout);if (c->err) {printf("Connection error: %s\n", c->errstr);exit(1);}/* PING server */reply = (redisReply *)redisCommand(c, "PING");printf("PING: %s\n", reply->str);freeReplyObject(reply);/* Set a key */reply = (redisReply *)redisCommand(c, "SET %s %s", "foo", "hello world");printf("SET: %s\n", reply->str);freeReplyObject(reply);/* Set a key using binary safe API */reply = (redisReply *)redisCommand(c, "SET %b %b", "bar", 3, "hello", 5);printf("SET (binary API): %s\n", reply->str);freeReplyObject(reply);/* Try a GET and two INCR */reply = (redisReply *)redisCommand(c, "GET foo");printf("GET foo: %s\n", reply->str);freeReplyObject(reply);reply = (redisReply *)redisCommand(c, "INCR counter");printf("INCR counter: %lld\n", reply->integer);freeReplyObject(reply);/* again ... */reply = (redisReply *)redisCommand(c, "INCR counter");printf("INCR counter: %lld\n", reply->integer);freeReplyObject(reply);/* Create a list of numbers, from 0 to 9 */reply = (redisReply *)redisCommand(c, "DEL mylist");freeReplyObject(reply);for (j = 0; j < 10; j++) {char buf[64];sprintf_s(buf, 64, "%d", j);reply = (redisReply *)redisCommand(c, "LPUSH mylist element-%s", buf);freeReplyObject(reply);}/* Let's check what we have inside the list */reply = (redisReply *)redisCommand(c, "LRANGE mylist 0 -1");if (reply->type == REDIS_REPLY_ARRAY) {for (j = 0; j < reply->elements; j++) {printf("%u) %s\n", j, reply->element[j]->str);getchar();}}freeReplyObject(reply);return 0;
}

PS.可能会碰到的编译错误

1.必须定义入口点,请在win32fixes.h之前加上#define NO_QFORKIMPL

2.各种与其他库的使用冲突,请右击项目->属性->配置属性->C/C++->代码生成->运行库->改成多线程调试(/MTd)或多线程(/MT)

并且在右击项目->属性->配置属性->连接器->命令行中输入/NODEFAULTLIB:libcmt.lib

3.error C4996,各种unsafe报错啊,请右击项目->属性->配置属性->C/C++->预处理器->预处理器定义->添加“_CRT_SECURE_NO_WARNINGS”(不带引号)

作者:Sky_Raker

出处:https://www.cnblogs.com/raker/p/4368741.html

windows下redis 和 hiredis的编译与使用相关推荐

  1. Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案

    Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案 参考文章: (1)Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案 (2)http ...

  2. Windows下Redis的使用

    目录 Redis介绍 Window 下安装 Redis可视化工具 Windows下Redis的主从复制 正文 Redis介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持 ...

  3. windows下Redis 主从读写分离部署

    windows下Redis 主从读写分离部署 原文: windows下Redis 主从读写分离部署 1.可直接下载window下的运行文件(下面这个链接) 也可以浏览github 查看相应的版本说明文 ...

  4. Frambuffer_rd在Windows下的vivado 2020.1编译报错解决方法

    vivado2020.1 HLS生成的IP在Windows下报错 Frambuffer_rd在Windows下的vivado 2020.1编译报错解决方法 我的解决方法: 编译过程如下 之后重新对工程 ...

  5. Windows下Redis 安装教程

    Windows下Redis 安装教程 下载redis 下载地址:https://github.com/microsoftarchive/redis/releases 打开cmd,进入redis安装目录 ...

  6. redis数据库windows下c语言库的编译

    使用cmake和make工具进行windows下的编译 下载 1.hiredis下载地址 https://github.com/redis/hiredis 克隆源码 2.cmake下载地址 https ...

  7. Windows下Redis中RedisQFork位置调整

    redis-server.exe redis.windows.conf 使用上面命令启动redis服务的时候报了以下错误信息: The Windows version of Redis allocat ...

  8. 如何在Windows下使用Linux系统来编译和运行程序?

    很多开发人员都有这样的疑问:自己平时是在Windows下面办公的,而自己编写的程序的运行环境又是Linux的,如何从Windows切换到Linux呢?是不是要专门到Linux机器上去编写代码呢? 实际 ...

  9. Windows下redis使用及安装

    基本信息 安装 基本信息 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.redis是一个key-value存 ...

最新文章

  1. R语言dplyr包移除dataframe数据列实战(Remove Columns)
  2. 打造自动、智能的Office 2003安装光盘
  3. 20120511学习笔记
  4. Maven 配置文件 POM 的常用依赖配置代码
  5. 某些专题页面内容很好,但很长时间都不被及时收录的可能原因之一
  6. 红橙Darren视频笔记 仿酷狗侧滑效果
  7. iPhone卖不出去 采购未达标 苹果“补偿”三星6.83亿美元
  8. 在linux大量进程里只看root的命令
  9. 飞舞的蝴蝶(GraphicsView框架)
  10. 解决Myeclipse中断点不起作用的方法
  11. 网站api自己怎么写_网站建设及推广网站关键词优化自己怎么做网站推广
  12. 前端技术-HTML5与CSS
  13. 超卓航空通过注册:年营收1.4亿 湖北将再诞生一家上市企业
  14. Ninth season twentieth episode,Joey held a celebrities party but did not invited his friends!!!!!!
  15. golang结构体指针
  16. 【Python】Python 注释 ( 单行注释 | 多行注释 | 代码示例 )
  17. 第16周 啊哈算法 火柴棍等式
  18. windows系统日志查看
  19. linux下统计log文件中某个字段的值,并计算出平均值
  20. ssm 网上零食商城

热门文章

  1. 区块链系统之《基于区块链的PKI数字证书系统》
  2. CTF C#逆向Reverse
  3. HTTP中request请求参数的设置
  4. 【MySQL】按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
  5. MySQL—事务并发问题
  6. 写博客必备的复制黏贴
  7. Redis常见面试题及答案模板
  8. 833c语言程序是什么,江南大学
  9. androidstuido_schooltest_7_storage
  10. ARM处理器寻址方式 之 堆栈寻址