#!/bin/bash
# 加载公共函数库
source <(curl -sSL https://www.klquan.com/scripts/common.sh)

# 基础配置（每个脚本不一样）
server="redis"
home="/data"
REDIS_PASSWORD=Yonyou123
download_patch="https://redis.io/download"

# 1.获取软件安装包并选择版本
all_package=($(get_packages "$server" "$download_patch"))
package=$(select_version "$1" "${all_package[@]}")
show_usage

# 2.确认信息
countdown "$home" "$package"

# 3.安装过程
echo "【1】下载源码包"
curl -L -o "$home/$package" -# "$packages_url$package"
check

echo "【2】解压并安装"
cd "$home"
server_dir=$(tar -tf "$package" 2>/dev/null | head -1 | cut -f1 -d"/")
tar xf "$package" && rm -f "$package"
cd "$server_dir"
#make PREFIX="$home/redis" install >/dev/null
make PREFIX="$home/redis" install >/dev/null 2>&1
# 创建软链接到系统PATH
ln -sf "$home/redis/bin/redis-server" /usr/local/bin/redis-server
ln -sf "$home/redis/bin/redis-cli" /usr/local/bin/redis-cli
ln -sf "$home/redis/bin/redis-benchmark" /usr/local/bin/redis-benchmark 2>/dev/null || true
check
echo "    ····软链接已创建: /usr/local/bin/redis-server, /usr/local/bin/redis-cli"

echo "【3】创建Redis目录结构"
mkdir -p "$home/redis"/{conf,logs,data,run}
useradd -r -s /sbin/nologin redis 2>/dev/null || true
chown -R redis:redis "$home/redis"
check

echo "【4】配置Redis"
#egrep -v "^$|^#" $home/$server_dir/redis.conf > $home/redis/conf/redis.conf
#sed -i "s|^bind.*|bind 0.0.0.0|g" $home/redis/conf/redis.conf
#sed -i "s|^tcp-backlog.*|tcp-backlog 1024|g" $home/redis/conf/redis.conf
#sed -i "s|^daemonize.*|daemonize yes|g" $home/redis/conf/redis.conf
#sed -i "s|^pidfile.*|pidfile $home/redis/redis.pid|g" $home/redis/conf/redis.conf
#sed -i "s|^logfile.*|logfile "$home/redis/redis.log"|g" $home/redis/conf/redis.conf
#sed -i "s|^dir.*|dir $home/redis/|g" $home/redis/conf/redis.conf
#sed -i '$a\requirepass Yonyou123' $home/redis/conf/redis.conf

cat > "$home/redis/conf/redis.conf" << EOF
bind 0.0.0.0
port 6379
daemonize yes
pidfile $home/redis/run/redis_6379.pid
logfile $home/redis/logs/redis.log
dir $home/redis/data
maxmemory 512mb
maxmemory-policy allkeys-lru
save 900 1
save 300 10
save 60 10000
requirepass $REDIS_PASSWORD
EOF
check

echo "【5】配置systemd管理"
cat > /etc/systemd/system/redis.service << EOF
[Unit]
Description=Redis Data Store
After=network.target

[Service]
Type=forking
User=redis
Group=redis
ExecStart=$home/redis/bin/redis-server $home/redis/conf/redis.conf
ExecStop=$home/redis/bin/redis-cli shutdown
Restart=always
WorkingDirectory=$home/redis

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable redis >/dev/null 2>&1
systemctl start redis
check
echo "    ····查看执行：systemctl status redis"


echo "【完成】所有内容都在 $home/redis 目录下"
echo "    ····初始密码是$REDIS_PASSWORD"
