Redis部署采坑记

问题一:

问题描述:

make 编译源码时报错

问题详解:

因为缺少gcc-c++编译器的原因

解决方案:

方案一:

yum -y install gcc-c++

报错样例:

make[1]: 进入目录“/redis/redis-3.2.8/src”rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html(cd ../deps && make distclean)make[2]: 进入目录“/redis/redis-3.2.8/deps”(cd hiredis && make clean) > /dev/null || true(cd linenoise && make clean) > /dev/null || true(cd lua && make clean) > /dev/null || true(cd geohash-int && make clean) > /dev/null || true(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true(rm -f .make-*)make[2]: 离开目录“/redis/redis-3.2.8/deps”(rm -f .make-*)echo STD=-std=c99 -pedantic -DREDIS_STATIC='' >> .make-settingsecho WARN=-Wall -W >> .make-settingsecho OPT=-O2 >> .make-settingsecho MALLOC=jemalloc >> .make-settingsecho CFLAGS= >> .make-settingsecho LDFLAGS= >> .make-settingsecho REDIS_CFLAGS= >> .make-settingsecho REDIS_LDFLAGS= >> .make-settingsecho PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -O2 -g -ggdb -I../deps/geohash-int -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settingsecho PREV_FINAL_LDFLAGS= -g -ggdb -rdynamic >> .make-settings(cd ../deps && make hiredis linenoise lua geohash-int jemalloc)make[2]: 进入目录“/redis/redis-3.2.8/deps”(cd hiredis && make clean) > /dev/null || true(cd linenoise && make clean) > /dev/null || true(cd lua && make clean) > /dev/null || true(cd geohash-int && make clean) > /dev/null || true(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true(rm -f .make-*)(echo "" > .make-cflags)(echo "" > .make-ldflags)MAKE hirediscd hiredis && make staticmake[3]: 进入目录“/redis/redis-3.2.8/deps/hiredis”gcc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.cmake[3]: gcc:命令未找到make[3]: *** [net.o] 错误 127make[3]: 离开目录“/redis/redis-3.2.8/deps/hiredis”make[2]: *** [hiredis] 错误 2make[2]: 离开目录“/redis/redis-3.2.8/deps”make[1]: [persist-settings] 错误 2 (忽略) CC adlist.o/bin/sh: cc: 未找到命令make[1]: *** [adlist.o] 错误 127make[1]: 离开目录“/redis/redis-3.2.8/src”make: *** [all] 错误 2

问题二:

问题一解决后还是报错

问题描述:

安装gcc-c++编译器后还是报错

问题详解:

分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。

而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。
但是如果你又没有jemalloc 而只有 libc 当然 make 出错。

解决方案:

方案一:

添加参数 make MALLOC=libc

样例:

cd src && make allmake[1]: 进入目录“/redis/redis-3.2.8/src” CC adlist.oIn file included from adlist.c:34:0:zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录 #include 
^编译中断。make[1]: *** [adlist.o] 错误 1make[1]: 离开目录“/redis/redis-3.2.8/src”make: *** [all] 错误 2