这里使用redis-6.2.6最新stable版本作为演示, 如果在生产环境部署, 建议不要使用最新版本,使用一个已经被广泛使用的稳定版本,以防止出现一些未知的问题无法解决。
下载地址:https://download.redis.io/releases/redis-6.2.6.tar.gz
上传redis-6.2.6.tar.gz
安装压缩包到服务器/opt/packages
(这是我的习惯,软件压缩包都会上传到这个目录下面)
# 解压命令
tar -zxf redis-6.2.6.tar.gz
# 进入解压缩之后的目录
cd redis-6.2.6
# 编译安装
make&&make install prefix=/usr/local/software
安装完成到/usr/local/software/redis/bin
检查是否安装成功
将解压包redis-6.2.6目录下的redis.conf
复制到/usr/local/software/redis/bin
目录下
# 拷贝配置文件到安装目录下的bin目录下
cp /opt/packages/redis-6.2.6/redis.conf /usr/local/software/redis/bin
通过建立软连接的方式,让redis-server和redis-cli命令全局可用【稍后在拓展部分详细再说说配置系统
变量的几种常见的方式】,具体操作命令如下:
# 创建redis-server和redis-cli命令调用的软链接到/usr/bin目录下即可全局调用
ln -s /usr/local/software/redis/bin/redis-server /usr/bin/redis-server
ln -s /usr/local/software/redis/bin/redis-cli /usr/bin/redis-cli
# 启动redis服务端
redis-server /etc/redis.conf
# 重启redis服务端
redis-cli shutdown
redis-server /etc/redis.conf
# 启动redis客户端
redis-cli
# 指定服务端端口启动
redis-cli -p 6379
# redis集群通过客户端连接【如果是集群, 一定要加上-c参数】
redis-cli -p 6379 -c
如果启动redis-server需要设置后台运行,需要修改配置文件中的如下内容
daemonize yes
# 注释掉只允许本地连接的设置项
# bind 127.0.0.1 -::1
# 关闭保护模式
protected-mode no
# 设置redis的连接密码[不设置就是裸奔,千万不要]
requirepass redis的登录密码【自己设置,注意requirepass后面的空格不能少哦】
保存退出,启动redis-server,发现,redis-server启动之后直接在后台运行,不会再占用命令行了。
CentOS7.X之后的版本都使用systemctl命令来管理系统服务,而不是使用service命令了
配置系统服务的配置文件存放目录:/usr/lib/systemd/system
在/usr/lib/systemd/system下创建配置文件redis.service,
# 创建redis的配置文件
vim /usr/lib/systemd/system/redis.service
配置文件内容如下:
[Unit]
Description=redis
After=network.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
# 【这里注意修改redis-server及redis.conf的路径为你自己的redis的安装目录】
ExecStart=/usr/local/software/redis/bin/redis-server /usr/local/software/redis/bin/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
最后一定不要忘记:wq!保存退出
# 设置redis服务开机自启
systemctl enable redis.service
# 启动redis服务
systemctl start redis.service
# 停止redis服务
systemctl stop redis.service
# 重启redis服务
systemctl restart redis.service
# 查询redis服务状态
systemctl status redis.service
systemctl status redis.service -l
资源有限, 这里就在同一台机器上面进行主从复制搭建演示
首先先检查机器上是否有正在运行的redis服务,如果有,则先停止该redis服务
# 检查redis运行状态的方式一
ps -ef |grep redis
# 检查redis运行状态的方式二
systemctl status redis(这种方式的前提是redis已经配置成系统服务)
# 关闭redis服务方式一
systemctl stop redis(这种方式的前提是redis已经配置成系统服务)
# 关闭redis服务方式二
redis-cli shutdown
# 创建主从复制的安装目录
mkdir -p /usr/local/software/redis-cluster/master /usr/local/software/redis-cluster/slave1 /usr/local/software/redis-cluster/slave2
cp -r /usr/local/software/redis/bin /usr/local/software/redis-cluster/master/
cp -r /usr/local/software/redis/bin /usr/local/software/redis-cluster/slave1/
cp -r /usr/local/software/redis/bin /usr/local/software/redis-cluster/slave2/
master主节点修改配置文件/usr/local/software/redis-cluster/master/bin/redis.conf
如下:
# 因为之前已经安装了一个单机版的redis占用了6379端口,这里主节点就使用6380
port 6380
# 进程ID文件也要区别开来
pidfile /var/run/redis_6380.pid
# 日志文件[每个节点产生的日志文件也隔离开]
logfile "/var/log/redis/redis_6380.log"
slave1节点修改配置文件/usr/local/software/redis-cluster/slave1/bin/redis.conf
如下:
# 因为之前已经安装了一个单机版的redis占用了6379端口、主节点占用了6380,这里从1节点就使用6381
port 6381
# 进程ID文件也要区别开来
pidfile /var/run/redis_6381.pid
# 日志文件[每个节点产生的日志文件也隔离开]
logfile "/var/log/redis/redis_6381.log"
# 指定主从赋值的master节点ip和端口
replicaof 192.168.1.103 6380
slave2节点修改配置文件/usr/local/software/redis-cluster/slave2/bin/redis.conf
如下:
# 因为之前已经安装了一个单机版的redis占用了6379端口、主节点占用了6380,这里从2节点就使用6382
port 6382
# 进程ID文件也要区别开来
pidfile /var/run/redis_6382.pid
# 日志文件[每个节点产生的日志文件也隔离开]
logfile "/var/log/redis/redis_6382.log"
# 指定主从赋值的master节点ip和端口
replicaof 192.168.1.103 6380
# 创建脚本文件
vim /usr/local/software/redis-cluster/start.sh
启动脚本内容如下:
ECHO "starting redis cluster..."
# master主节点启动
/usr/local/software/redis-cluster/master/bin/redis-server /usr/local/software/redis-cluster/master/bin/redis.conf
# slave1节点启动
/usr/local/software/redis-cluster/slave1/bin/redis-server /usr/local/software/redis-cluster/slave1/bin/redis.conf
# slave2节点启动
/usr/local/software/redis-cluster/slave2/bin/redis-server /usr/local/software/redis-cluster/slave2/bin/redis.conf
ECHO "redis cluster start success"
修改启动脚本执行权限,否则一般用户无法执行
chmod a+x /usr/local/software/redis-cluster/start.sh
启动脚本
sh /usr/local/software/redis-cluster/start.sh
或
/usr/local/software/redis-cluster/start.sh
查询主从复制运行状态
ps -ef |grep redis
如果见到如下显示,说明主从复制已经部署成功了,下面我们来测试一下redis的主从复制以及数据同步
# ps -ef |grep redis
root 1358 1 0 17:41 ? 00:00:01 /usr/local/software/redis-cluster/master/bin/redis-server *:6380
root 1360 1 0 17:41 ? 00:00:01 /usr/local/software/redis-cluster/slave1/bin/redis-server *:6381
root 1362 1 0 17:41 ? 00:00:01 /usr/local/software/redis-cluster/slave2/bin/redis-server *:6382
1)验证主从复制是否只有主节点可写入, 而从节点只能读,不能写?
首先,我们使用master节点的客户端工具redis-cli连接主节点,往master节点中写入一条数据,再查一下,看是否正常
/usr/local/software/redis-cluster/master/bin/redis-cli -p 6380
select 0
set username master
get username
测试结果
: master节点可以正常写入数据
其次,我们使用slave1节点的客户端工具redis-cli连接slave1节点,测试测试可以往slave1节点中写入数据
/usr/local/software/redis-cluster/slave1/bin/redis-cli -p 6381
select 0
set username slave1
测试结果
: slave1节点无法写入数据
再次,我们使用slave2节点的客户端工具redis-cli连接slave2节点,测试测试可以往slave2节点中写入数据
/usr/local/software/redis-cluster/slave2/bin/redis-cli -p 6382
select 0
set username slave2
测试结果
: slave2节点无法写入数据
结论
: redis集群只有主节点可写入, 而从节点只能读,不能写。
1)验证主节点写入数据, 从节点是否可以查询到主节点的数据,数据一致性校验?
我们使用slave1节点的客户端工具redis-cli连接slave1节点,测试slave1节点是否已经同步master节点的数据
/usr/local/software/redis-cluster/slave1/bin/redis-cli -p 6381
select 0
get username
我们使用slave2节点的客户端工具redis-cli连接slave2服务节点,测试slave2服务节点是否已经同步master节点的数据
/usr/local/software/redis-cluster/slave2/bin/redis-cli -p 6382
select 0
get username
结论
: redis主从复制数据同步正常,能保证主从数据一致性。
问题
: 虽然redis主从复制可以很好的解决读写分离、数据备份的问题, 但是同时它也带来一些问
题,如果负责写的redis服务突然挂掉了怎么办,因为我们知道我们的从节点只能读取数据,数据的主节
点一旦不能提供服务,那么整个服务的不在具体写数据的能力,如果我们不手动把主节点的宕机问题解
决并重新启动的话,那主从复制就废掉了。
解决方案
: redis提供了哨兵模式。
哨兵模式主要就是提供一种高可用的解决方案,通过发送命令,让Redis服务器返回监控其运行状态,包
括主服务器和从服务器;当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模
式通知其他的从服务器,修改配置文件,让它们切换主机。
# 创建哨兵节点的安装目录
mkdir -p /usr/local/software/redis-sentinel
# 将redis单节点bin目录下所有的文件都拷贝到哨兵节点的安装目录下
cp -r /usr/local/software/redis/bin/* /usr/local/software/redis-sentinel
redis提供的安装压缩包里面提供了哨兵模式的默认配置文件sentinel.conf,我们只需要把它从解压缩安
装包中拷贝过来使用即可
# 将sentinel.conf文件拷贝到哨兵节点的安装目录下
cp /opt/packages/redis-6.2.6/sentinel.conf /usr/local/software/redis-sentinel/
# 这里演示使用三个哨兵节点的配置过程
cd /usr/local/software/redis-sentinel/
# 复制添加另外两个哨兵节点的配置文件
cp sentinel.conf sentinel-26380.conf
cp sentinel.conf sentinel-26381.conf
修改sentinel.conf配置文件的内容如下
# 服务启动端口
port 26379
# 以守护进程后台运行
daemonize yes
# pid文件
pidfile /var/run/redis-sentinel-26379.pid
# 日志文件所在目录
logfile “/var/log/redis-sentinel/sentinel-26379.log”
# 哨兵监控的redis节点
sentinel monitor redis-master 172.106.2.15 6380 2
修改sentinel-26380.conf配置文件的内容如下
# 服务启动端口
port 26380
# 以守护进程后台运行
daemonize yes
# pid文件
pidfile /var/run/redis-sentinel-26380.pid
# 日志文件所在目录
logfile “/var/log/redis-sentinel/sentinel-26380.log”
# 哨兵监控的redis节点
sentinel monitor redis-master 172.106.2.15 6380 2
修改sentinel-26381.conf配置文件的内容如下
# 服务启动端口
port 26381
# 以守护进程后台运行
daemonize yes
# pid文件
pidfile /var/run/redis-sentinel-26381.pid
# 日志文件所在目录
logfile “/var/log/redis-sentinel/sentinel-26381.log”
# 哨兵监控的redis节点
sentinel monitor redis-master 172.106.2.15 6380 2
vim /usr/local/software/redis-sentinel/redis-sentinel/start.sh
ECHO "starting redis sentinels..."
# 哨兵节点1启动
/usr/local/software/redis-sentinel/redis-sentinel /usr/local/software/redis-sentinel/sentinel.conf
# 哨兵节点2启动
/usr/local/software/redis-sentinel/redis-sentinel /usr/local/software/redis-sentinel/sentinel-26380.conf
# 哨兵节点3启动
/usr/local/software/redis-sentinel/redis-sentinel /usr/local/software/redis-sentinel/sentinel-26381.conf
ECHO "redis sentinels start success"
修改启动脚本执行权限,否则一般用户无法执行
chmod a+x /usr/local/software/redis-cluster/start.sh
启动主从节点
# 直接调用/usr/local/software/redis-cluster/start.sh也是可以的
sh /usr/local/software/redis-cluster/start.sh
启动多哨兵节点
# 直接调用/usr/local/software/redis-sentinel/start.sh也是可以的
sh /usr/local/software/redis-sentinel/start.sh
查询主从复制节点及多哨兵运行状态
ps -ef |grep redis
如果见到如下显示,说明主从节点以及多哨兵都启动成功了
# ps -ef |grep redis
root 6563 1 0 15:46 ? 00:00:00 /usr/local/software/redis-cluster/master/bin/redis-server *:6380
root 6565 1 0 15:46 ? 00:00:00 /usr/local/software/redis-cluster/slave1/bin/redis-server *:6381
root 6571 1 0 15:46 ? 00:00:00 /usr/local/software/redis-cluster/slave2/bin/redis-server *:6382
root 6585 1 0 15:46 ? 00:00:00 /usr/local/software/redis-sentinel/redis-sentinel *:26379 [sentinel]
root 6587 1 0 15:46 ? 00:00:00 /usr/local/software/redis-sentinel/redis-sentinel *:26380 [sentinel]
root 6589 1 0 15:46 ? 00:00:00 /usr/local/software/redis-sentinel/redis-sentinel *:26381 [sentinel]
# 连接redis主从的master节点
/usr/local/software/redis-cluster/master/bin/redis-cli -p 6380
# 检查主从复制状态是否正常
info replication
# 连接redis主从的slave1节点
/usr/local/software/redis-cluster/slave1/bin/redis-cli -p 6381
# 检查主从复制状态是否正常
info replication
# 连接redis主从的slave2节点
/usr/local/software/redis-cluster/slave2/bin/redis-cli -p 6382
# 检查主从复制状态是否正常
info replication
# 连接redis主从的slave1节点
/usr/local/software/redis-cluster/slave1/bin/redis-cli -p 6381
# 检查主从复制状态是否正常
info replication
# 连接redis主从的slave2节点
/usr/local/software/redis-cluster/slave2/bin/redis-cli -p 6382
# 检查主从复制状态是否正常
info replication
结果: 原来的salve1节点成为了新的主节点,slave2节点仍然是从节点
# 启动原主节点
/usr/local/software/redis-cluster/master/bin/redis-server /usr/local/software/redis-cluster/master/bin/redis.conf
# 连接原主节点
/usr/local/software/redis-cluster/master/bin/redis-cli -p 6380
# 检查主从复制状态是否正常
info replicatio
结果: 原来的master节点成为了新的从节点
结论: 哨兵模式在主从复制中可以良好监控节点的运行状态,当服务发生宕机或者其他异常问题导
致无法正常提供服务时, 可以自动检测异常并进行主备切换,保证服务在可控情况下一直正常对外提供
服务。
我们就将我们之前搭建的单机版的redis改造成集群,资源有限,还是在一台服务器上面进行演示
当集群中超过或等于1/2节点不可用时,整个集群不可用。为了搭建稳定集群,都采用奇数节点。
从/usr/local/software/redis/bin下把redis.conf复制到当前目录中,命名为redis-10080.conf
# 复制配置文件
cp /usr/local/software/redis/bin/redis.conf /usr/local/redis/bin/redis-10080.conf
# 修改配置文件
vim /usr/local/software/redis/bin/redis-10080.conf
redis-10080.conf文件中需要修改的内容如下【找到文档中这些配置参数改成如下】
port 10080
cluster-enabled yes
cluster-config-file nodes-10080.conf
cluster-node-timeout 15000
# appendonly yes 如果开启aof默认,需要修改为yes。如果使用rdb,此处不需要修改
daemonize yes
protected-mode no
pidfile /var/run/redis_10080.pid
logfile "/var/log/redis/redis-10080.log"
# 复制配置文件
cp /usr/local/software/redis/bin/redis-10080.conf /usr/local/software/redis/bin/redis-10081.conf
cp /usr/local/software/redis/bin/redis-10080.conf /usr/local/software/redis/bin/redis-10082.conf
cp /usr/local/software/redis/bin/redis-10080.conf /usr/local/software/redis/bin/redis-10083.conf
cp /usr/local/software/redis/bin/redis-10080.conf /usr/local/software/redis/bin/redis-10084.conf
cp /usr/local/software/redis/bin/redis-10080.conf /usr/local/software/redis/bin/redis-10085.conf
修改配置文件如下:
vim /usr/local/software/redis/bin/redis-10081.conf
使用命令行模式输入全局替换命令:%s#10080#10081#g
, 之后:wq!
保存退出
vim /usr/local/software/redis/bin/redis-10082.conf
使用命令行模式输入全局替换命令:%s#10080#10082#g
, 之后:wq!
保存退出
vim /usr/local/software/redis/bin/redis-10083.conf
使用命令行模式输入全局替换命令:%s#10080#10083#g
, 之后:wq!
保存退出
vim /usr/local/software/redis/bin/redis-10084.conf
使用命令行模式输入全局替换命令:%s#10080#10084#g
, 之后:wq!
保存退出
vim /usr/local/software/redis/bin/redis-10085.conf
使用命令行模式输入全局替换命令:%s#10080#10085#g
, 之后:wq!
保存退出
在/usr/local/software/redis/bin目录下创建start.sh脚本
vim start.sh
# 启动redis-10080节点
/usr/local/software/redis/bin/redis-server /usr/local/software/redis/bin/redis-10080.conf
# 启动redis-10081节点
/usr/local/software/redis/bin/redis-server /usr/local/software/redis/bin/redis-10081.conf
# 启动redis-10082节点
/usr/local/software/redis/bin/redis-server /usr/local/software/redis/bin/redis-10082.conf
# 启动redis-10083节点
/usr/local/software/redis/bin/redis-server /usr/local/software/redis/bin/redis-10083.conf
# 启动redis-10084节点
/usr/local/software/redis/bin/redis-server /usr/local/software/redis/bin/redis-10084.conf
# 启动redis-10085节点
/usr/local/software/redis/bin/redis-server /usr/local/software/redis/bin/redis-10085.conf
修改启动脚本执行权限,否则一般用户无法执行
chmod a+x /usr/local/software/redis/bin/start.sh
注意: 第一次启动cluster集群,执行之前一定要先删除dump.rdb
rm -f /usr/local/software/redis/bin/dump.rdb
注意: 第一次启动cluster集群,执行之前一定要先删除dump.rdb
# 直接调用/usr/local/software/redis/bin/start.sh也可以
sh /usr/local/software/redis/bin/start.sh
# 检查集群状态
ps -ef |grep redis
如下所示说明redis集群启动成功
ps -ef |grep redis
root 698 1 0 17:32 ? 00:00:00 /usr/local/software/redis/bin/redis-server *:6379
root 1216 1 0 17:36 ? 00:00:00 /usr/local/software/redis/bin/redis-server *:10080 [cluster]
root 1218 1 0 17:36 ? 00:00:00 /usr/local/software/redis/bin/redis-server *:10081 [cluster]
root 1224 1 0 17:36 ? 00:00:00 /usr/local/software/redis/bin/redis-server *:10082 [cluster]
root 1230 1 0 17:36 ? 00:00:00 /usr/local/software/redis/bin/redis-server *:10083 [cluster]
root 1236 1 0 17:36 ? 00:00:00 /usr/local/software/redis/bin/redis-server *:10084 [cluster]
root 1242 1 0 17:36 ? 00:00:00 /usr/local/software/redis/bin/redis-server *:10085 [cluster]
# 使用redis-cli建立集群的命令
./redis-cli --cluster create 172.106.2.15:10080 172.106.2.15:10081 172.106.2.15:10082 172.106.2.15:10083 172.106.2.15:10084 172.106.2.15:10085 --cluster-replicas 1
这样redis集群就搭建成功了, 下面我们来测试一下
刚才搭建的集群有3主3从, 10080/10081/10082是主节点, 10083/10084/10085是从节点,我们测试一下集群中的的数据同步是否正常
登录主节点10080
# 登录集群主节点的命令【-c这个参数不能省略, 这个参数代表集群】
/usr/local/software/redis/bin/redis-cli -p 10080 -c
# 切换到redis的数据库0
select 0
# 写入键值对数据
set username admin
登录其他主从节点,看看啊数据是否同步一致
登录主节点10081
# 登录集群主节点的命令【-c这个参数不能省略, 这个参数代表集群】
/usr/local/software/redis/bin/redis-cli -p 10081 -c
# 切换到redis的数据库0
select 0
# 查询数据
get username
登录主节点10081
# 登录集群从节点的命令【-c这个参数不能省略, 这个参数代表集群】
/usr/local/software/redis/bin/redis-cli -p 10084 -c
# 切换到redis的数据库0
select 0
# 查询数据
get username
其他节点的连接查询方式都类似,可以自行测试
结果: redis集群的主从复制很快,可以有效保证数据的一致性
# 创建集群停止脚本
vim /usr/local/software/redis/bin/stop.sh
脚本内容如下:
# 停止10080节点
/usr/local/software/redis/bin/redis-cli -p 10080 shutdown
# 停止10081节点
/usr/local/software/redis/bin/redis-cli -p 10081 shutdown
# 停止10082节点
/usr/local/software/redis/bin/redis-cli -p 10082 shutdown
# 停止10083节点
/usr/local/software/redis/bin/redis-cli -p 10083 shutdown
# 停止10084节点
/usr/local/software/redis/bin/redis-cli -p 10084 shutdown
# 停止10085节点
/usr/local/software/redis/bin/redis-cli -p 10085 shutdown
修改启动脚本执行权限,否则一般用户无法执行
chmod a+x /usr/local/software/redis/bin/stop.sh
如果需要停止redis的集群服务,直接执行stop.sh脚本即可。
dump.rdb文件中。当redis重启后会自动加载dump.rdb文件中内容到内存中。
用户可以使用SAVE(同步)或BGSAVE(异步)手动保存数据。
可以设置服务器配置的save选项,让服务器每隔一段时间自动执行一次BGSAVE命令,可以通过save选项设置多个保存条件,但只要其中任意一个条件被满足,服务器就会执行BGSAVE命令。
# 服务器在3600秒之内,对数据库进行了至少1次修改
save 3600 1
# 服务器在300秒之内,对数据库进行了至少100次修改
save 300 100
服务器在60秒之内,对数据库进行了至少10000次修改
save 60 10000
AOF默认是关闭的,需要在配置文件中开启AOF。Redis支持AOF和RDB同时生效,如果同时存在,
AOF优先级高于RDB(Redis重新启动时会使用AOF进行数据恢复)
监听执行的命令,如果发现执行了修改数据的操作,同时直接同步到数据库文件中。
修改redis.conf中
# 默认no
appendonly yes
# aof文件名
appendfilename "appendonly.aof"
策略名称 | 优点 | 缺点 |
---|---|---|
rdb | 1) rdb文件是一个紧凑文件,直接使用rdb文件就可以还原数据数据;2)保存会由一个子进程进行保存,不影响父进程;3)恢复数据的效率要高于aof | 1)每次保存点之间导致redis不可意料的关闭,可能会丢失数据;2)由于每次保存数据都需要fork()子进程,在数据量比较大时可能会比较耗费性能。 |
aof | 1) 相对RDB数据更加安全 | 1)相同数据集AOF要大于RDB;2)相对RDB可能会慢一些。 |
redis的五种常用的数据类型:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)
具体的操作命令你给这里不赘述,如果需要用到直接去命令网站查询即可
提供几个很棒的redis命令示例帮助网站:
这几个网站都可以的, 需要用到了去查一下怎么用就可以了。
这里以redis-server和redis-cli设置全局调用为例
方式一:
将安装目录下服务端和客户端的可执行启动文件创建超链接到/usr/bin/即可
ln -s /usr/local/software/redis/bin/redis-server /usr/bin/redis-server
ln -s /usr/local/software/redis/bin/redis-cli /usr/bin/redis-cli
方式二:
在/etc/profile文件中将redis的安装目录/usr/local/software/redis/bin添加到系统环境变量里面
vim /etc/profile
# 在文件的最后一行追加上
export PATH=/usr/local/software/redis/bin:$PATH
# 另外一种方式
# export PATH=$PATH:/usr/local/software/redis/bin
:wq!
保存退出
执行一下命令, 让配置立即生效
source /etc/profile
方式三:
在~/.bash.rc文件中将redis的安装目录/usr/local/software/redis/bin添加到系统环境变量里
vim ~/.bash.rc
# 在文件的最后一行追加上
export PATH=/usr/local/software/redis/bin:$PATH
# 另外一种方式
# export PATH=$PATH:/usr/local/software/redis/bin
:wq!
保存退出
执行一下命令, 让配置立即生效
source ~/.bash.rc
方式四:
在~/.bash_profile文件中将redis的安装目录/usr/local/software/redis/bin添加到系统环境变量
vim ~/.bash_profile
# 在文件的最后一行追加上
export PATH=/usr/local/software/redis/bin:$PATH
# 另外一种方式
# export PATH=$PATH:/usr/local/software/redis/bin
:wq!
保存退出
执行一下命令, 让配置立即生效
source ~/.bash_profile
方式五:
在/etc/bashrc文件中将redis的安装目录/usr/local/software/redis/bin添加到系统环境变量里)
vim /etc/bashrc
# 在文件的最后一行追加上
export PATH=/usr/local/software/redis/bin:$PATH
# 另外一种方式
# export PATH=$PATH:/usr/local/software/redis/bin
:wq!
保存退出
执行一下命令, 让配置立即生效
source /etc/bashrc
方式六:
在/etc/environment文件中将redis的安装目录/usr/local/software/redis/bin添加到系统环境变量
vim /etc/environment
# 如果/etc/environment文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/environment
#在文件的最后一行追加上
export PATH=/usr/local/software/redis/bin:$PATH
# 另外一种方式
# export PATH=$PATH:/usr/local/software/redis/bin
:wq!
保存退出
执行一下命令, 让配置立即生效
source /etc/environment
可以简单的分成用户自定义的环境变量以及系统级别的环境变量。
用户级别环境变量定义文件:~/.bashrc
、~/.profile
(部分系统为:~/.bash_profile
)
/etc/bashrc
、/etc/profile
(部分系统为:/etc/bash_profile
)、/etc/environment
~/.bash_profile
(或者~/.profile
)文件,如果没有该文件则读取~/.bash_login
,根据这些文件中内容再去读取~/.bashrc
。/etc/environment > /etc/profile > /etc/bash.bashrc > /etc/profile.d/test.sh > ~/.profile > ~/.bashrc
更多linux环境变量的知识请参考博客:https://www.cnblogs.com/youyoui/p/10680329.html