Redis手动编译安装——采坑记(重点解决缺失jemalloc.h)

1 篇文章 1 订阅
1 篇文章 0 订阅

Redis-4.0.10手动编译安装——采坑记(重点解决缺失jemalloc.h)

一、前期准备

mkdir /app
yum install -y gcc wget
wget http://download.redis.io/releases/redis4.0.10.tar.gz
tar zxvf redis-4.0.10.tar.gz -C /app/
cd redis-4.0.10

二、编译过程,采坑记

make
第1个报错:zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory

网上大部分的答案可能就是这样:

使用make MALLOC=libc
这种不明所以的答案我是不认可的,既然官网默认使用jemalloc,自然有它的道理和好处,ReadMe里也写了,它比libc在碎片化问题中有更少的问题。所以为了图简单而使用libc我个人是不认可的。

百度没有找到答案,谷歌了一下也没发现什么方法,于是我决定自己寻找答案。那我们就看看这个jemalloc到底是啥?记住我们是程序员,上github一查就知道了。官网地址:https://github.com/jemalloc/jemalloc

那么剩下的就简单了,缺啥装啥呗:

yum install -y bzip2
wget https://github.com/jemalloc/jemalloc/releases/download/5.1.0/jemalloc-5.1.0.tar.bz2
tar jxvf ./jemalloc-5.1.0.tar.bz2
cd jemalloc-5.1.0
./configure
make
make install
第2个报错

继续make,发现再次报错:

cc: error: ../deps/hiredis/libhiredis.a: No such file or directory
cc: error: ../deps/lua/src/liblua.a: No such file or directory
cc: error: ../deps/jemalloc/lib/libjemalloc.a: No such file or directory
解决方法:
缺少编译文件,编译一下就好了
cd /app/redis-4.0.10/deps/
make lua hiredis linenoise jemalloc
第3个报错

继续make,发现没有报错,执行make test提示缺少tcl > 8.5,老规矩缺啥补啥:

yum install -y tcl
make test
第4个报错

好吧,是不是我人品太差了,make test的测试用例过不了,最后我把问题锁定在这里,大概意思是时区有问题:

make[1]: warning:  Clock skew detected.  Your build may be incomplete.

看了看确实时区不对,解决办法,改时区呗:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
make test
# 仍然报同样的错误,我怀疑可能是文件解压导致的时区错乱问题
rm -rf /app/redis
tar zxvf redis-4.0.10.tar.gz -C /app/
make成功
make test成功

总结

至此大工告成,总结一下遇到的问题,都不是问题,多观察多思考多百度即可解决。至于是否要将jemalloc修改为libc,我个人是不喜欢的,性格使然,做技术就应该不能妥协这种问题,即使只是这样一点点的调优。最后放上测试成功的图:
redis测试成功

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值