安装依赖
yum -y install make gcc systemd-devel openssl-devel jemalloc-devel
创建 redis 用户
useradd -r -s /sbin/nologin redis
创建数据目录
mkdir /data/apps/redis/{data,logs} -pv && chown -R redis:redis /data/apps/redis
下载 Redis
wget https://download.redis.io/redis-stable.tar.gz
编译 Redis
tar xf redis-stable.tar.gz && cd redis-stable
make USE_SYSTEMD=yes BUILD_TLS=yes
make install PREFIX=/usr/local/redis-7.4.2
复制配置文件
mkdir -pv /usr/local/redis-7.4.2/etc && \
cp redis.conf sentinel.conf /usr/local/redis-7.4.2/etc && \
chown -R redis:redis /usr/local/redis-7.4.2/etc \
ln -sv /usr/local/redis-7.4.2 /usr/local/redis
Redis 配置
sed -i -e 's@port 6379@port 16379@' \-e 's@bind 127.0.0.1@bind 0.0.0.0@g' \-e '/# requirepass /a requirepass 123456' \-e 's@pidfile /var/run/redis_6379.pid@pidfile /data/apps/redis/redis.pid@' \-e 's@dir ./@dir /data/apps/redis/data@' \-e 's@logfile ""@logfile /data/apps/redis/logs/redis.log@' /usr/local/redis/etc/redis.conf
redis-server.service
cat > /lib/systemd/system/redis-server.service <<EOF
[Unit]
Description=Redis persistent key-vaue database
After=network.target[Service]
Restart=always
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --supervised systemd
ExecStop=/bin/ki11 -S QUIT
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
LimitNOFILE=1000000
TimeoutStartSec=30
TimeoutStopSec=30[Install]
WantedBy=multi-user.targetEOF
开机自启
systemctl enable redis-server --now
解决警告信息
查看服务日志
2580:C 12 Dec 2024 08:53:46.461 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. 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.
# WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
解决办法
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf && sysctl -p
echo net.core.somaxconn = 1024 >> /etc/sysctl.conf && sysctl -p
systemctl restart redis-server