Linux下编译安装最新稳定版Redis

819 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第15天,点击查看活动详情

  • 支持各类Linux版,支持ARM端

1.下载

在编译前请安装必要的软件包:

# CentOS/Rhel
yum -y install git wget gcc

# Ubuntu
sudo apt-get install git wget gcc

从官网上下载最新的redis稳定软件包,下载完成之后备用:

wget https://download.redis.io/redis-stable.tar.gz

解压:

tar -xf redis-stable.tar.gz && cd tar -xf redis-stable

2.编译安装

编译已经解压的redis:

make && make install

编译会根据自己电脑的配置花费不同的时间,请耐心等待,编译完成后会自动安装。

3.执行测试(可选)

在执行测试make test前需要安装tcl工具,如果你的系统是CentOS/Rhel系统,可以执行以下命令安装:

yum -y install tcl

如果是Ubuntu系统,需要下载后编译安装此工具。

wget https://udomain.dl.sourceforge.net/project/tcl/Tcl/8.6.1/tcl8.6.1-src.tar.gz
tar -xf tcl8.6.1-src.tar.gz
cd unix/
./configure
make
make install

以下完成之后,再次执行make test命令:

make test

测试的过程可能花费的时间会很长,耐心等待之后如果出现“\o/ All tests passed without errors!”的字样,则说明Redis编译安装成功。

4.配置

回到redis源代码目录,将redis配置文件拷贝到配置目录中:

cp redis.conf /etc/

新建日志地址:

mkdir -p /usr/local/redis/logs
touch  /usr/local/redis/logs/redis.log

配置redis配置文件:

vim /etc/redis.config

将下面的配置文件配置到末尾,也可以直接修改原有的配置。

# 定义日志文件
logfile "/usr/local/redis/logs/redis.log"
# 若使用开机启动,生成pid,该项必须设置为yes,否则redis将不能够正常执行开机启动(systemctl start redis,执行后一直卡着,直到超时)
daemonize yes    
# 注释掉,允许所有其他ip访问,也可以设置网段访问
#bind 127.0.0.1  
#允许其他机器上的客户端连接当前redis,配置文件设置该项,则开机启动处就可以去掉--protected no 
protected-mode no 
# db保存路径,由于db持久化到磁盘,占用空间可能比较大,所以选择比较打的文件夹设置
dir /usr/local/redis/ 
##设置密码
requirepass 123456 

设置为开机启动:

vim /usr/lib/systemd/system/redis.service

将以下内容粘贴进去。

[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis.conf --protected-mode no
ExecStop=/usr/local/bin/redis-cli shutdown
#Restart=always
Type=forking
#User=redis
#Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target

使配置生效:

systemctl enable redis
systemctl daemon-reload

启动redis:

systemctl start redis

检查启动日志,如果没有报错正常启动则正常,也可以像我一样手动启动来检查:

tail -f  /usr/local/redis/logs/redis.log

如果有警告,也可以根据警告修改内核参数:

 vim /etc/sysctl.conf

粘贴以下内容:

vm.overcommit_memory=1
net.core.somaxconn = 1024

使配置生效:

sysctl -p

进制内核中启用Transparent Huge Pages(THP)支持,防止Redis延迟和内存使用问题

echo never > /sys/kernel/mm/transparent_hugepage/enabled

最后,重启一下redis,就可以愉快地玩耍了!