redis源码单实例安装

修改网络、内存及资源限制相关内核参数
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_max_syn_backlog = 65535
net.core.somaxconn = 65535
net.ipv4.tcp_max_tw_buckets = 262144
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_time = 120
vm.overcommit_memory = 1
vm.swappiness = 1
fs.file-max = 1024000
EOF


sysctl -p


检查THP(Transparent Huge Pages)是否开启(以下情况为开启)
cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never

cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never


禁用THP(立即生效)
echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/enabled


禁用THP(重启生效)
cat >> /etc/rc.d/rc.local << EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
 echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
 echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF


chmod +x /etc/rc.d/rc.local
 
 
修改 ulimit
cat >> /etc/security/limits.conf <<EOF
redis            soft    nofile          1024000
redis            hard    nofile          1024000
EOF


cat >> /etc/security/limits.d/redis.conf <<EOF
redis  soft  nofile  1024000
redis  hard  nofile  1024000
EOF



yum install -y  gcc gcc-c++   automake autoconf libtool make


redis 6.0.5版本(含)推荐使用jemalloc管理内存
yum install -y  jemalloc

如果是redis 6.0版本(含)以上需要升级gcc到9版本(gcc --version 命令可看gcc版本),scl命令启用只是临时
yum -y install  devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils  centos-release-scl 

scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile


软件下载地址: http://download.redis.io/releases


解压,上传至 /data
tar xzf  redis-5.0.14.tar.gz


安装:
cd  redis-5.0.14
make PREFIX=/usr/local/redis install


环境变量:
echo "export PATH=\$PATH:/usr/local/redis/bin">>/etc/profile
source /etc/profile


创建目录:
mkdir /data/redis -p


参数配置
cat > /data/redis/redis.conf<<EOF
### Server ###
pidfile                                   /data/redis/redis.pid  
port                                      6379                             
bind                                      0.0.0.0
logfile                                   "/data/redis/redis.log"  
dbfilename                                redis_dump.rdb                
dir                                       /data/redis                
appendfilename                            "redis.aof"       
daemonize                                 yes
loglevel                                  notice
databases                                 16
activerehashing                           yes
hz                                        10

### Auth ###
requirepass                               "sdfdSDFwer124"
masterauth                                "sdfdSDFwer124"

### Memory ###
maxmemory                                 2gb
maxmemory-policy                          noeviction
maxmemory-samples                         5

### Persistence ###
save                                      " "
stop-writes-on-bgsave-error               no
rdbcompression                            yes
rdbchecksum                               yes
appendonly                                no
appendfsync                               everysec
no-appendfsync-on-rewrite                 yes
auto-aof-rewrite-percentage               100
auto-aof-rewrite-min-size                 2gb
aof-load-truncated                        yes

### Clients ###     
maxclients                                10000
tcp-backlog                               65535
timeout                                   0
tcp-keepalive                             60
client-output-buffer-limit normal         0 0 0
client-output-buffer-limit slave          256mb 64mb 60
client-output-buffer-limit pubsub         32mb 8mb 60

### Replication ###
slave-serve-stale-data                    yes
slave-read-only                           yes
repl-diskless-sync                        no
repl-diskless-sync-delay                  5
repl-ping-slave-period                    10
repl-disable-tcp-nodelay                  no
repl-backlog-size                         2gb
repl-backlog-ttl                          3600
slave-priority                            100

### Command ###
rename-command                            flushall ""
rename-command                            flushdb ""

### Slowlog ###
slowlog-log-slower-than                   1000
slowlog-max-len                           1024

### Redis 4.0 New ###
lazyfree-lazy-eviction                    no
lazyfree-lazy-expire                      yes
lazyfree-lazy-server-del                  yes
slave-lazy-flush                          yes
EOF



启动:
redis-server /data/redis/redis.conf &


连接:
redis-cli  -a "sdfdSDFwer124"


配置Redis启动脚本  /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.

REDIS_PORT=6379            
PASSWORD='sdfdSDFwer124'
EXEC=/usr/local/redis/bin/redis-server   
CLIEXEC=/usr/local/redis/bin/redis-cli    

PIDFILE=/data/redis/redis.pid 
CONF="/data/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 $REDIS_PORT -a $PASSWORD shutdown 2>/dev/null
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    status)
        PID=$(cat $PIDFILE)
        if [ ! -x /proc/${PID} ]
        then
                echo 'Redis is not running'
        else
                echo "Redis is running ($PID)"
        fi
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Please use start, stop, restart or status as first argument"
        ;;
esac



修改启动脚本权限
chmod 770 /etc/init.d/redis


启动:
/etc/init.d/redis  start

 

posted @ 2025-06-17 22:32  屠魔的少年  阅读(15)  评论(0)    收藏  举报