redis最新版本,windows系统最新版本redis
Redis5.0带来了Stream类型。从字面上看是流类型,但其实从功能上看,应该是Redis对消息队列(MQ,Message Queue)的完善实现。用过Redis做消息队列的都了解,基于Reids的消息队列实现有很多种,例如:
- PUB/SUB,订阅/发布模式
- 基于List的 LPUSH+BRPOP 的实现
- 基于Sorted-Set的实现
自己的一个小项目中,需要使用到Stream类型数据,所以,就要开始折腾了。
手懒不想自己编译Redis Windows版的,可以联系我。
看Redis文档,其实它是不能直接支持windows系统的,但是咱们工人有力量,折腾下就好。
在网上查,看着有用Cygwin编译成功的,但是我想用MinGW试试,使用MinGW最终没有成功,差在缺少poll.h 文件,但是发现Cygwin64中是有这个文件的。所以还是转到了使用Cygwin进行编译,最终编译成功,做了一个普通版,一个TLS版,。
编译systemd版本Redis
编译失败
要编译一个systemd版本的,但是报错,应该是缺少环境。
reids的开发文档中说:要使用systemd支持进行构建,您将需要systemd开发库(例如Debian / Ubuntu上的libsystemd-dev或CentOS上的systemd-devel)
0 1 2 3 4 5 6 |
~/redis-6.0.7 $ make USE_SYSTEMD=yes cd src && make all make[1]: 进入目录“/home/admin/redis-6.0.7/src” Makefile:168: *** USE_SYSTEMD is set to "yes", but pkg-config cannot find libsystemd。 停止。 make[1]: 离开目录“/home/admin/redis-6.0.7/src” make: *** [Makefile:6:all] 错误 2 |
编译Mac OS版本的 Redis
编译失败
还要编译一个Mac OS版本,还是缺少必要环境文件
0 |
$ make MALLOC=jemalloc |
0 1 2 3 4 |
... cc: 错误:../deps/jemalloc/lib/libjemalloc.a:No such file or directory make[1]: *** [Makefile:283:redis-server] 错误 1 make[1]: 离开目录“/home/admin/redis-6.0.7/src” make: *** [Makefile:6:all] 错误 2 |
进入依赖,编译依赖:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ cd deps/jemalloc/ $ ls autogen.sh ChangeLog config.stamp.in configure.ac include jemalloc.pc.in Makefile.in run_tests.sh test bin config.log config.status COPYING INSTALL.md m4 msvc scripts TUNING.md build-aux config.stamp configure doc jemalloc.pc Makefile README src VERSION $ make gcc -std=gnu11 -Wall -Wsign-compare -Wundef -Wno-format-zero-length -pipe -g3 -O3 -funroll-loops -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_REENTRANT -Iinclude -Iinclude -DJEMALLOC_NO_PRIVATE_NAMESPACE -o src/jemalloc.sym.o src/jemalloc.c In file included from include/jemalloc/internal/jemalloc_preamble.h:5, from src/jemalloc.c:2: include/jemalloc/internal/jemalloc_internal_decls.h:22:14: 致命错误:sys/syscall.h:No such file or directory 22 | # include <sys/syscall.h> | ^~~~~~~~~~~~~~~ 编译中断。 make: *** [Makefile:350:src/jemalloc.sym.o] 错误 1 |
Cygwin中没有 sys/syscall.h 文件,结果没有结果了。
———————-
下面是编译成功的 Redis 6.0.7 普通版本和TLS版
———————-
编译 Redis 普通版和TLS版
- 先安装Cygwin64环境,并安装gcc,gcc-core,gcc-g++devel包;
- 在windows系统中把Redis源码解压放到 ./cygwin64/home/admin 下;
- 进入Cygwin模拟系统的 /home/admin 下,使用ls命令就会看到刚才放入的文件夹;
- 进入 redis-6.0.7 文件夹,可以进行一次git提交,这样在编译成功后可以清楚的看到增加了哪些文件,
0$ make
如果是TLS版本:
0$ make BUILD_TLS=yes
- 如果顺利的话,会看到:
但是一般的时候,不会那么顺利的!!!
- 在windows系统中新建一个文件夹redis-v6.0.7,把 ./redis-6.0.7/src下的.exe文件全部拷贝过来;
- 再到./cygwin64/bin下,找到cygwin1.dell拷贝到新建的文件夹中
- 再把项目根目录的 redis.conf 文件,拷贝过来
- 测试,查看帮助信息,进入redis目录,命令:
redis-server.exe
-h
0123456789101112131415Redis-v6.0.7>redis-server.exe -hUsage: ./redis-server [/path/to/redis.conf] [options]./redis-server - (read config from stdin)./redis-server -v or --version./redis-server -h or --help./redis-server --test-memory <megabytes>Examples:./redis-server (run the server with default conf)./redis-server /etc/redis/6379.conf./redis-server --port 7777./redis-server --port 7777 --replicaof 127.0.0.1 8888./redis-server /etc/myredis.conf --loglevel verboseSentinel mode:./redis-server /etc/sentinel.conf --sentinel - 启动redis,命令:redis-server.exe 或 redis-server.exe redis.conf
- 再开个cmd,进入此目录,命令:
redis-cli.exe
- 完成。
另外,做了两个bat脚本,一个是添加redis到windows系统服务(create-service.bat),一个是删除此添加redis的系统服务(delete-service.bat)。
常见报错:
1、
0 1 2 3 4 |
... cc: 错误:../deps/linenoise/linenoise.o:No such file or directory make[1]: *** [Makefile:299:redis-cli] 错误 1 make[1]: 离开目录“/home/admin/redis-6.0.7/src” make: *** [Makefile:6:all] 错误 2 |
解决办法:进入/home/admin/redis-6.0.7/src/deps/linenoise/ 目录,编译
2、
0 1 2 3 4 |
cc: 错误:../deps/hiredis/libhiredis.a:No such file or directory cc: 错误:../deps/lua/src/liblua.a:No such file or directory make[1]: *** [Makefile:283:redis-server] 错误 1 make[1]: 离开目录“/home/admin/redis-6.0.7/src” make: *** [Makefile:6:all] 错误 2 |
解决办法:进入/home/admin/redis-6.0.7/src/deps/hiredis/ 目录,编译
3、
0 1 2 3 4 5 6 |
$ make test cd src && make test make[1]: 进入目录“/home/admin/redis-6.0.7/src” You need tcl 8.5 or newer in order to run the Redis test make[1]: *** [Makefile:330:test] 错误 1 make[1]: 离开目录“/home/admin/redis-6.0.7/src” make: *** [Makefile:6:test] 错误 2 |
解决办法:
安装或更新 GNU Cygwin 中的 tcl 版本大于 8.5即可
其实还有其它报错,但是没记下那么多,理解意思就行,大致的意思,一是编译环境依赖版本的问题,二是需要预编译包内自带的所需的工具。
手懒不想自己编译redis最新版本(Redis Windows版)的,可以联系我。