前言
记录一下日常开发过程中有关Redis安装方面的内容
版本信息:
- Redis-5.0.5
- CentOS 7.6
PS:如果使用的 docker 管理应用,且redis安装在宿主机上,此时需要注意 docker 中的应用访问宿主机的方式,否则可能出现应用无法连接上Redis的情况,可以出现以下报错:
org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection;nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused (Connection refused)
安装编译环境
安装gcc编译环境
yum install gcc-c++
下载Redis
进入Redis官方下载网站: https://redis.io/download
右键Download,复制下载链接
将复制的连接粘贴到Linux命令行中,通过wget命令下载
wget https://download.redis.io/releases/redis-5.0.5.tar.gz
解压并安装Redis
解压
等待上面步骤下载完成Redis后,通过以下命令将Redis解压到当前目录
tar -zvxf redis-5.0.5.tar.gz
解压后,可在当前目录下查看到redis-5.0.5文件夹
移动Redis目录
一般会将Redis放到/usr/local目录下,这里将Redis放到/usr/local/redis
mv /root/redis-5.0.5 /usr/local/redis
以上命令在将redis-5.0.5这个目录移动到/usr/local文件夹下的同时,将redis-5.0.5的文件夹名称更改为redis
编译
移动到文件夹后,需要进入到移动后的文件夹,对Redis进行编译
cd /usr/local/redis
make
此时控制台中会输入各种编译信息,等待完成即可
安装
编译完成后,可以开始安装Redis
make PREFIX=/usr/local/redis install
PS:这里使用了**PREFIX**关键字,这个关键字的作用是用于指定安装后程序存放的位置。
如果不指定,Linux会将Redis的可执行文件存放到/usr/local/bin目录下,库文件存放到/usr/local/lib目录下,配置文件存放到/usr/local/etc目录下,其他的资源文件存放在usr/local/share目录下。
指定**PREFIX**关键字有助于管理Redis的文件,也方便后期需要从机器上删除Redis时,通过 rm -rf /usr/local/redis , 删除掉redis这个文件夹后,即可删除Redis。
编辑配置文件redis.conf
- 注释 bind 属性,该参数用于设定绑定的主机地址,如果需要远程访问,需要将bind属性注释掉 或者 bind *
- 将 protected-mode 设为 no,保护模式,该属性控制外网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问redis的,如需外网连接rendis服务则需要将此属性改为no。
- 将 daemonize 设为yes,yes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行,设为yes,即为后台启动。
- 将 port 设定为需要的端口号,该属性用于指定 Redis 监听端口,如果是云服务器,注意要开放该端口的安全组策略。
- 将 dir 设定为需要的地址,该属性用于指定本地数据库存放目录
- 设置数据库文件名 dbfilename ,该属性用于指定本地数据库文件名,默认值为 dump.rdb。
- 设置密码 requirepass ,该属性用于设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH 命令提供密码,默认关闭。
- 设置日志存放路径,logfile “/var/log/redis/redis-server.log”,该属性用于指定Redis的日志文件存放位置。
启动Redis
完成上面的内容后,基本上Redis的配置已经结束了,可以启动Redis了。
cd /usr/local/redis
./bin/redis-server ./redis.conf
在redis-server后面跟着配置文件,这样做的目的是让Redis根据这个配置文件启动服务,redis.conf配置文件可以自定义多个,启动时指定某个配置文件启动即可。
查看是否启动成功
ps aux | grep redis
查看端口监听情况
netstat -lanp | grep 6379
redis-cli
redis-cli是连接本地redis服务的一个命令,通过该命令后可以进入redis的脚本控制台。如下图:
输入exit可推出Redis脚本控制台。
在控制台里,也可以设置redis的配置文件属性,通过CONFIG GET *可读取出redis所有的配置
CONFIG GET *
通过CONFIG SET 属性名 属性值可设置属性。
CONFIG SET protected-mode no
添加服务
因为我使用的是CentOS 7.6,所以通过systemctl脚本来配置服务,有查到资料说可以通过 systemctl enable redis 这条命令取代脚本启动,不过没有成功,因此还是使用脚本方式。
systemctl脚本说明
[Unit]
部分主要是对这个服务的说明,内容包括Description和After,
Description 用于描述服务,
After 用于描述服务类别;
[Service]
部分是服务的关键,是服务的一些具体运行参数的设置,
这里:
Type=forking 是后台运行的形式,
PIDFile 为存放PID的文件路径,
ExecStart 为服务的运行命令,
ExecReload 为重启命令,
ExecStop 为停止命令,
PrivateTmp=True 表示给服务分配独立的临时空间,
[Install]
部分是服务安装的相关设置,可设置为多用户的
创建redis脚本
首先先创建脚本文件
vim /lib/systemd/system/redis.service
编辑脚本内容
在脚本文件中写入一下内容,根据实际情况更改相关配置
[Unit]
Description=redis-server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /etc/redis/6379.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
PS:在脚本中,有 PIDFile 配置项,这个配置项的值需要与/etc/redis/6379.conf配置中的 pidfile 属性相同。
/etc/redis/6379.conf是自定义的配置文件。
重载系统服务
新增并编辑好脚本文件后,需要重新加载一下系统服务
systemctl daemon-reload
操作Redis启动,关闭,开机自启
## 启动Redis
systemctl start redis.service
## 关闭Redis
systemctl stop redis.service
## 开机自启动
systemctl enable redis.service