• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在Linux上安装redis6.2(centOS)

    在 CentOS 8 升级 gcc

    redis需要 gcc支持,并且需要gcc9以及以上版本来编译。查看服务器gcc版本命令

    gcc -v
    

    查看gcc版本


    在CentOS8系统中,默认gcc版本已经是8.x.x版本,不要去编译升级 gcc,编译升级后可能会给你带来额外的麻烦。在 CentOS 8 版本中,红帽也提供了开发工具包管理 gcc 版本,install的包名从 devtoolset-x 变成了 gcc-toolset-x,通过该方式升级 gcc 好处就是随时可以切换 gcc 版本,不破坏原有 gcc 环境。

    gcc-toolset仅支持gcc9、gcc10版本

    • gcc-toolset-9 对应 gcc9.x.x 版本
    • gcc-toolset-10 对应 gcc10.x.x 版本

    安装gcc-toolset-10

    dnf install centos-release-stream
    dnf install gcc-toolset-10-gcc*
    source /opt/rh/gcc-toolset-10/enable
    echo "source /opt/rh/gcc-toolset-10/enable" >> /etc/profile
    

    升级完毕查看服务器gcc版本

    gcc -v
    

    查看gcc版本


    下载解压安装 redis6.2

    进入redia官网:https://redis.io

    redis官网

    下载解压

    cd  /tmp
    wget -c https://download.redis.io/releases/redis-6.2.1.tar.gz
    tar -xzvf redis-6.2.1.tar.gz
    

    utils目录

    在redis解压安装的目录下,有个utils目录,其中文件如上图,install_server.sh文件是redis自动安装文件。redis_init_script是redis自带的初始化脚本实例,手动编译安装,复制此文件手动配置。自动安装和手工编译安装方式,任选一种。

    方式一:自动安装 redis

    运行install_server.sh文件,进入自动安装的交互界面

    cd /tmp/redis-6.2.1/utils
    ./install_server.sh
    

    直接运行此文件,会有提示:
    This systems seems to use systemd.Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!

    解决方案:修改install_server.sh,把下面这一段进行注释:

    #bail if this system is managed by systemd
    #_pid_1_exe="$(readlink -f /proc/1/exe)"
    #if [ "${_pid_1_exe##*/}" = systemd ]
    #then
    #       echo "This systems seems to use systemd."
    #       echo "Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!"
    #       exit 1
    #fi
    

    注释掉后保存退出,再次运行此文件。根据提示输入对应的配置。

    [root@VM_0_5_centos utils]# ./install_server.sh
    Welcome to the redis service installer
    This script will help you easily set up a running redis server
    
    Please select the redis port for this instance: [6379] 6379
    Please select the redis config file name [/etc/redis/6379.conf] /usr/local/redis/etc/redis.conf
    Please select the redis log file name [/var/log/redis_6379.log] /var/log/redis.log
    Please select the data directory for this instance [/var/lib/redis/6379] /usr/local/redis/data
    Please select the redis executable path [/usr/local/bin/redis-server] /usr/local/bin/redis-server
    Selected config:
    Port           : 6379
    Config file    : /usr/local/redis/etc/redis.conf
    Log file       : /var/log/redis.log
    Data dir       : /usr/local/redis/data
    Executable     : /usr/local/bin/redis-server
    Cli Executable : /usr/local/bin/redis-cli
    Is this ok? Then press ENTER to go on or Ctrl-C to abort.
    Copied /tmp/6379.conf => /etc/init.d/redis_6379
    Installing service...
    Successfully added to chkconfig!
    Successfully added to runlevels 345!
    Starting Redis server...
    Installation successful!
    

    自动配置需要填写的信息

    运行后根据提示输入信息,最后会在/etc/init.d目录下自动生成一个启动脚本文件,/etc/init.d/redis_6379,用于开机自启动。可以修改文件名,也可以不修改。

    cp /etc/init.d/redis_6379 /etc/init.d/redis
    rm -f /etc/init.d/redis_6379
    

    安装完服务,redis自动启动,可以用ps命令查看到相关信息:

    [root@VM_0_5_centos bin]# ps -ef|grep redis
    root      4885  3538  0 08:37 pts/0    00:00:00 grep --color=auto redis
    root     26518     1  0 07:21 ?        00:00:31 /usr/local/bin/redis-server 127.0.0.1:6379
    



    方式二:编译安装 redis

    cd /tmp/redis-6.2.1
    make
    make install PREFIX=/usr/local/redis
    

    安装文件目录

    redis安装后文件列表

    复制配置文件

    mkdir -p /usr/local/redis/etc
    cp /tmp/redis-6.2.1/redis.conf /usr/local/redis/etc/
    cp /tmp/redis-6.2.1/utils/redis_init_script /etc/init.d/redis
    

    创建软连接,便于命令能直接调用

    ln -s /usr/local/redis/bin/redis-server /usr/local/bin/redis-server
    ln -s /usr/local/redis/bin/redis-cli /usr/local/bin/redis-cli
    


    测试启动redis

    /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
    

    启动redis

    看到如上界面,说明redis安装成功。Ctrl+c退出。再继续设置。



    修改redis配置

    mkdir -p /usr/local/redis/run
    mkdir -p /usr/local/redis/data
    
    vim /usr/local/redis/etc/redis.conf
    
    • 设置后台运行:daemonizeyes(redis默认值为no,禁止后台运行。)
    • 设置访问密码:requirepass123456(默认密码为空)在配置文件中找到这一行# requirepass foobared,删除前面的注释符号#,并把foobared修改成自己的密码。
    • 设置远程访问:protected-modeno(默认值yes,禁止远程访问。)
    • 设置访问地址:redis默认绑定本机IP,所以要注释掉#bind 127.0.0.1 -::1
    • 设置数据存放:dir/usr/local/redis/data(redis默认./,即redis-server启动的目录下。
    • 设置PID进程:pidfile/usr/local/redis/run/redis.pid当redis以守护进程运行时,默认将pid写入此路径下的文件中,可以通过修改配置项的值指定其他路径下的文件。
    daemonize yes
    requirepass 123456
    dir /usr/local/redis/data
    pidfile /usr/local/redis/run/redis.pid
    protected-mode no
    # bind 127.0.0.1 -::1
    
    

    redis.conf配置文件中的项的含义

    • daemonize no redis默认不是使用守护进程运行的,可以修改该配置项的值,使用yes以守护进程启动redis。
    • pidfile /usr/run/redis_6379.pid当redis以守护进程运行时,默认将pid写入此路径下的文件中,可以通过修改配置项的值指定其他路径下的文件。
    • port: 6379 redis默认的端口号。
    • bind 127.0.0.1默认绑定主机,默认情况下只有本机才可以访问redis ,如果需要在其他计算机上访问该服务器上的redis,需要将该配置项注释。
    • timeout 300当客户端闲置指定时间后,关闭连接,如果设置0,则表示关闭此功能。
    • loglevel verbose指定redis的日志级别,redis的日志级别有:debug、verbose、notice、warning,默认为verbose。
    • logfile stdout日志记录方式,默认为标准输出,如果将redis设置为守护进程,而此处又设置为标准输出,则日志输出会发送给/dev/null。
    • databases 16设置数据库的数量,默认数据库的标号为0,可以使用SELECT 命令在连接上指定数据库id。
    • save <seconds><changes>指定在多长时间,有多少条更新操作,就将数据同步到数据文件,可以多条配合

      Redis默认配置文件中提供了三个条件:
      save 900 1
      save 300 10
      save 60 10000
      分别表示 900秒(15分钟)内有1个更新操作,300秒(5分钟)内有10个更新操作,60秒(1分钟)内有10000个更新操作。

    • rdbcompression yes指定存储至本地数据库时是否进行压缩,默认为yes,redis采用LZF压缩,如果想要节省CPU占用,可以关闭此项,但是会导致数据库文件增大。
    • dbfilename dump.rdb指定本地数据库的文件名。
    • dir ./指定本地数据库文件存放位置。根据启动redis时所在目录存放,比如我在/usr下使用./usr/local/redis/bin/redis-server启动。则会在/usr下生成demp.rdb本地数据库文件。
    • replicaof <masterip><masterport>设置当本地为slave(主从服务中的从服务)服务时,master服务的IP以及端口号,在redis启动时,它会自动从master进行数据同步。
    • masterauth <password>当master服务设置了密码时,slave服务连接master服务的密码。
    • replicaof-read-only yes设置salve服务是否只读,默认为yes。
    • requirepass foobared设置当客户端连接服务端时的密码,默认关闭。
    • maxclients 128设置同一时间最大客户端连接数,默认无限制,如果设置为0,则表示不显示,当客户端达到限制时,新的客户端无法连接redis,并会返回max number of clients reached 错误信息。
    • maxmemory <bytes>指定redis最大内存限制,默认是256MB,到达最大内存之后,redis会尝试清除已到期或即将到期的key,当此方法处理之后,仍到达最大内存,这时将无法对redis进行写操作,但是仍然可以读取数据。
    • appendonly no指定是否在每次更新操作后进行日志记录,redis默认情况下是异步的将数据写入磁盘,如果不开启,可能会因为断电导致一段时间的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。
    • appendfilename appendonly.aof指定更新日志的文件名。
    • appendfsync everysec指定更新日志条件,共有3个值:
      • no:表示等操作系统进行数据缓存同步到磁盘(快)。
      • always:表示每次更新操作后手动调用fsync()将数据同步到磁盘(慢、安全)。
      • everysec:表示每秒同步一次(折中方案,也是默认值)。


    修改 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
    
    #自己实际安装redis服务的路径,本文提到的软联接的路径
    EXEC=/usr/local/bin/redis-server
    CLIEXEC=/usr/local/bin/redis-cli
    
    #redis的PID路径
    PIDFILE=/usr/local/redis/run/redis.pid
    
    #自己安装的redis配置文件的位置(根据自己的实际情况修改)
    CONF="/usr/local/redis/etc/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 -a $RESDISPASSWORD -p $REDISPORT 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
    

    修改redis运行脚本文件redis

    修改完成之后,添加权限:

    chmod 777 /etc/init.d/redis
    



    添加redis为系统服务

    使用systemctl命令管理服务,适用centOS7、centOS8。使用systemd自定义redis服务。systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,即:/usr/lib/systemd/system/usr/lib/systemd/user。每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]

    第一步:在系统服务目录/usr/lib/systemd/system/里创建redis.service文件

    vim /usr/lib/systemd/system/redis.service
    

    在 redis.service 文件写入如下内容。重启系统即可开机启动。文件内容:

    [Unit]
    Description=redis-server
    After=network.target
    
    [Service]
    Type=forking
    #redis-server安装的路径 和 redis.conf配置文件的路径(根据自己安装的情况来填写绝对路径)
    ExecStart=/usr/local/redis/bin/redis-server   /usr/local/redis/etc/redis.conf
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    各项参数说明:

    • Description:描述服务。
    • After:描述服务在哪些基础服务启动后再启动。
    • [Service]服务运行参数的设置。
    • Type=forking是最简单和速度最快的选择。
    • ExecStart为启动服务的具体运行命令。
    • ExecReload为重启命令。
    • ExecStop为停止命令。
    • PrivateTmp=True表示给服务分配独立的临时空间。

    注意:[Service]的启动、重启、停止命令全部要求使用绝对路径。[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3。

    第二步:设置redis开机启动

    systemctl enable redis
    



    管理 redis

    systemctl命令

    开启、重启、查看运行redis

    systemctl start redis
    systemctl restart redis
    systemctl status redis
    


    redis-server命令

    redis-server命令:开启

    redis-server /usr/local/redis/etc/redis.conf
    

    关闭 redis

    若redis没设置密码,可以使用systemctlstop redis
    若设置了密码,使用此命令会出错。应该用redis-cli客户端连接服务器后执行shutdown命令,则执行停止redis服务操作。



    查看redis是否运行

    方法一:

    ps -ef | grep redis
    

    方法二:

    lsof -i :6379
    

    方法三:

    netstat -lntp | grep 6379
    

    redis进程

    用 kill -9 杀掉redis进程,强制关闭redis服务

    查看redis进程PID

    ps -ef | grep redis
    

    查看redis进程PID

    如上图中 748 即是,杀掉此进程

    kill -9 748
    

    使用 killall 命令杀掉 redis 全部进程

    killall redis
    


    使用 redis-cli 客户端联接 redis 服务

    使用redis-cli连接redis本机默认连接地址127.0.0.1,端口6379,本机可以不指定。

    redis-cli -h 127.0.0.1 -p 6379
    

    若redis设置了密码,使用auth 认证密码。实例设置的简单密码123456,根据自己的情况设置使用自己的密码。

    auth 123456
    

    Redis Ping 命令使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 。通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值。

    PING
    

    ECHO,打印字符串

    ECHO "Hello World"
    

    quit,关闭连接

    quit
    


    使用redis-cli客户端

    使用 redis-cli 客户端关闭 redis 服务

    如果客户端设置了密码,则需要先连接 redis 服务端后再使用 shutdown 关闭。

    redis-cli -h 127.0.0.1 -p 6379
    auth 123456
    shutdown
    

    若无密码,直接 shutdown 关闭。

    redis-cli shutdown
    

    关闭redis服务



    安装php扩展 php_redis

    官方网址:https://pecl.php.net/package/redis

    下载到本地,文件传输上传到服务器上/tmp目录下

    cd /tmp
    tar xzf redis-5.3.4.tgz
    cd redis-5.3.4
    
    phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make
    make install
    

    安装完,会在/usr/local/php/lib/php/extensions/no-debug-non-zts-20200930/目录下生成 redis.so 扩展文件。

    vim /usr/local/php/etc/php.ini
    
    # 使用查找命令 /extension ,在 ;zend_extension=opcache 的上面一行加上 
    # extension=redis.so