## 下載redis
```
axel -n 10 http://download.redis.io/releases/redis-6.2.6.tar.gz
tar -zxvf redis-6.2.6.tar.gz
cd redis-6.2.6
```
## 安裝redis
```
make PREFIX=/alidata/server/redis/ install
```
## 配置redis
#### 新建數據目錄和日志目錄
~~~
mkdir /alidata/server/redis/data
mkdir /alidata/server/redis/log
cp ./redis.conf /alidata/server/redis/
vim /alidata/server/redis/redis.conf
~~~
#### 編輯內容
~~~
# IP綁定
bind 0.0.0.0
# 保護模式(開啟條件為各redis之間可以互相通信,做集群不可開啟)
protected-mode yes
# 訪問端口
port 6379
# 連接超時,單位S,0為不啟用超時
timeout 0
# 以守護進程運行
daemonize yes
# 數據文件路徑(dump.rdb附近)
dir /alidata/server/redis/data
# 進程ID文件的路徑
pidfile /var/run/redis.pid
# 日志文件路徑
logfile /alidata/server/redis/log/redis.log
# 設置登陸密碼
requirepass [redis的密碼]
# 禁用部分危險命令
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command KEYS ""
rename-command EVAL ""
# 開啟鍵過期刪除通知
notify-keyspace-events Ex
~~~
## 性能優化
~~~
# 編輯/etc/rc.local
vim /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 添加/etc/rc.local執行權限
chmod +x /etc/rc.d/rc.local
# 編輯/etc/sysctl.conf
vim /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 5120
# 立即解決
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 5120 > /proc/sys/net/core/somaxconn
sysctl vm.overcommit_memory=1
sysctl -p
~~~
## 修改目錄歸屬
~~~
useradd -s /sbin/nologin -M redis
chown -R redis:redis /alidata/server/redis
~~~
## 啟動redis并設置開機啟動
~~~
# 進入單元文件目錄
cd /usr/lib/systemd/system
# 創建redis單元文件,格式為: [單元文件名].[單元文件類型]
vim redis.service
[Unit]
Description=Start redis on boot.
After=default.target network.target
[Service]
User=redis
Group=redis
Type=forking
#PIDFile=/var/run/redis.pid
ExecStart=/alidata/server/redis/bin/redis-server /alidata/server/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false
#Restart=always
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
# 修改文件權限為只有root用戶可以編輯該文件
chown -R root:root /etc/systemd/system/redis.service
chmod -R 644 /etc/systemd/system/redis.service
# 更新systemd
systemctl daemon-reload
systemctl enable redis
systemctl start redis
~~~
## redis加入系統服務
```
cp /home/redis/redis-6.2.6/utils/redis_init_script /etc/init.d/redis
```
## 編輯/etc/init.d/redis
```
vim /etc/init.d/redis
```
```
#!/bin/sh
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
### BEGIN INIT INFO
# Provides: redis_6379
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Redis data structure server
# Description: Redis data structure server. See https://redis.io
### END INIT INFO
REDISPORT=6379
EXEC=/alidata/server/redis/bin/redis-server
CLIEXEC=/alidata/server/redis/bin/redis-cli
PIDFILE=/var/run/redis.pid
CONF=/alidata/server/redis/redis.conf
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT -a [redis的密碼] shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
```
#如果沒有設置開機啟動 執行chkconfig redis on
## 配置環境變量
```
vim /etc/profile
PATH=/alidata/server/redis/bin:$PATH
# 使配置生效
source /etc/profile
```