编译安装redis 6.2.4
一、下载redis 6.2.4的包
官网地址:https://redis.io/
中国区维护的网址:http://redis.cn/
二、解压缩
tar xf redis-6.2.4_\(2\).tar.gz
三、安装
1、安装gcc编译器
yum install gcc -y
2、进入解压的目录
cd redis-6.2.4
3、安装,并指定安装目录
make PREFIX=/apps/redis install
注释:指定安装路径,不指定目录会放在当前目录,目录不存在会自动创建
四、复制源码包中的配置文件
1、在/apps/redis 下创建etc(可以不做)
mkdir /apps/redis/etc
2、复制文件到/apps/redis 下的etc下(也可也直接复制到对应的redis目录下)
cp /data/redis-6.2.4/redis.conf /apps/redis/etc/
五、启动redis 服务
/apps/redis/bin/redis-server
会显示警告:短期使用不会有问题,但长期使用会出问题
警告如下:
6970:M 07 Jul 2021 18:23:53.111 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 6970:M 07 Jul 2021 18:23:53.111 # Server initialized 6970:M 07 Jul 2021 18:23:53.111 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. 6970:M 07 Jul 2021 18:23:53.111 * Ready to accept connections
1、 这个值要求511, 目前设置的是128
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
cklog backlog 参数控制的是 三次 握手 的时候 server serverserver 端收到 client ackclient ack client ackclient ackclient ack 确认 号之后 的队列值
配置为511或者更高的值:
解决办法:
vim /etc/sysctl.conf 添加大于511的值即可 net.core.somaxconn = 512
使其生效:
sysctl -p
2、
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
0、表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1、表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2、表示内核允许分配超过所有物理内存和交换空间总和的内存
解决办法:
vim /etc/sysctl.conf
vm.overcommit_memory = 1
使其生效:
sysctl -p
五、以服务的方式启用
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=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
1、以Redis用户启动,创建Redis用户
useradd redis -s /sbin/nologin
2、修改redis目录的所有者所有组为redis
chown redis.redis /apps/redis/ -R
或者使用软连接方式
ln -sv /apps/redis/bin/redis-* /usr/bin/
注释,如果报错的话,可能是gcc没安装哦