在Linux上安装redis6.2(centOS)
在 CentOS 8 升级 gcc
redis需要 gcc支持,并且需要gcc9以及以上版本来编译。查看服务器gcc版本命令
gcc -v
在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
下载解压安装 redis6.2
进入redia官网: https://redis.io
下载解压
cd /tmpwget -c https://download.redis.io/releases/redis-6.2.1.tar.gztar -xzvf redis-6.2.1.tar.gz
在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/redisrm -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.1make make install PREFIX=/usr/local/redis
复制配置文件
mkdir -p /usr/local/redis/etccp /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-serverln -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安装成功。
Ctrl
+
c
退出。再继续设置。
修改redis配置
mkdir -p /usr/local/redis/runmkdir -p /usr/local/redis/datavim /usr/local/redis/etc/redis.conf
-
设置后台运行:
daemonize
yes (redis默认值为no,禁止后台运行。) -
设置访问密码:
requirepass
123456 (默认密码为空)在配置文件中找到这一行# requirepass foobared
,删除前面的注释符号 # ,并把foobared修改成自己的密码。 -
设置远程访问:
protected-mode
no (默认值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
yesrequirepass
123456dir
/usr/local/redis/datapidfile
/usr/local/redis/run/redis.pidprotected-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
修改完成之后,添加权限:
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 redissystemctl restart redissystemctl status redis
redis-server命令
redis-server命令:开启
redis-server /usr/local/redis/etc/redis.conf
关闭 redis
若redis没设置密码,可以使用systemctl stop redis
若设置了密码,使用此命令会出错。应该用 redis-cli 客户端连接服务器后执行shutdown
命令,则执行停止redis服务操作。
查看redis是否运行
方法一:
ps -ef | grep redis
方法二:
lsof -i :6379
方法三:
netstat -lntp | grep 6379
用 kill -9 杀掉redis进程,强制关闭redis服务
查看redis进程PID
ps -ef | grep redis
如上图中 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 服务
如果客户端设置了密码,则需要先连接 redis 服务端后再使用 shutdown 关闭。
redis-cli -h 127.0.0.1 -p 6379auth 123456shutdown
若无密码,直接 shutdown 关闭。
redis-cli shutdown
安装php扩展 php_redis
官方网址: https://pecl.php.net/package/redis
下载到本地,文件传输上传到服务器上
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