前言
工欲善其事必先利其器,操作 Linux 服务器得有一个用着舒服的客户端,这里推荐使用 MobaXterm
MobaXterm 下载地址:https://mobaxterm.mobatek.net/download.html
Redis 下载地址:https://redis.io/download
传输
-
打开下载好的 MobaXterm,使用 SSH 连接方式
-
连接成功后默认到 root 目录
-
MobaXterm 左边是目录,在左边目录的最底部,有个选择框(Follow terminal folder)把它勾选上。
勾选上它后,目录就会跟着你的命令动态发生变化
-
输入命令 cd /usr/local/ -> 进入目录
-
输入命令 mkdir -p redis/init -> 新建多级文件夹
-
输入命令 cd redis/init -> 进入目录
-
打开下载到本地的 Redis(redis-4.0.14.tar.gz)文件夹,把 Redis 拖拽到 MobaXterm 左边目录中
-
传输需要一点点时间,也可以在 MobaXterm 左边目录底部看到传输进度
安装环境
- 输入命令 yum install gcc-c++ -> 安装 gcc 的环境(注:安装途中会询问是否 ok,输入 y )
安装 Redis
-
输入命令 tar zxvf redis ,然后按一下 Tab 自动补全剩余名称;回车
-
输入命令 cd redis ,然后按一下 Tab 自动补全剩余名称;回车
-
输入命令 make -> 编译
-
输入命令 make install PREFIX=/usr/local/redis -> 安装到指定路径
启动停止
-
输入命令 cd /usr/local/redis/bin/ -> 进入到 Redis 启动目录
-
输入命令 ./redis-server -> 启动 Redis,启动成功后可以看到 Redis 的版本,端口等等信息
-
ctrl + c -> 停止 Redis
注:此时 Redis 如果使用 ./redis-server 方式启动,在本地项目直接连接服务器上的 Redis时会报错
io.lettuce.core.RedisConnectionException: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients…
配置
在服务器上的 Redis 都不会用上面的方式启动(./redis-server),一般会在启动时带上 redis.conf 配置文件
① 在 redis.conf 里面配置后台启动
② 在 redis.conf 里面配置连接密码
③ 在 redis.conf 里面配置绑定的 ip
-
输入命令 cd /usr/local/redis/bin/ -> 进入到 Redis 启动目录
-
输入命令 cp /usr/local/redis/init/redis-4.0.14/redis.conf /usr/local/redis/bin/ -> 复制 Redis 解压
目录中的 redis.conf 文件到 Redis 启动目录,注意更换你的 Redis 版本
-
文件内容太长了,这里我直接双击打开 redis.conf 文件,这样的话修改方便
-
ctrl + F 查找 daemonize no,把 no 更改为 yes -> 后台启动
-
ctrl + F 查找 requirepass foobared
-
紧接着下面写一行 requirepass your password(your password自行更改为你自己的密码)。
特别注意要顶格写 -> 连接密码
-
ctrl + F 查找 bind 127.0.0.1,一共有两处,把第二处的 bind 127.0.0.1 注释 -> 外网可访问
-
ctrl + s 保存,点击 Yes to all
-
输入命令 ./redis-server redis.conf -> 启动 Redis
-
此时因为是后台启动的 Redis,所以想停止 Redis 就得停止进程
-
输入命令 ps -aux | grep redis -> 查看 Redis 进程
-
输入命令 kill pid -> 停止进程,pid 为当前查看到的 Redis 进程 ID,从左往右第二个即为 PID
Redis 有两种持久化方案
① rdb -> 优点:存取数据速度快(内存) / 缺点:不能保证数据完整性
② aof -> 优点:可以保证数据的完整性 / 缺点:存取慢(硬盘)
两种持久化方案对应两个文件
① rdb -> dump.rdb
② aof -> appendonly.aof
为什么说 rdb 持久化方案不能保证数据完整性
因为 rdb 持久化方案是先存于内存中,触发一定条件后,才存到硬盘
为什么说 aof 持久化方案存取慢
因为 aof 持久化方案读写是直接操作的硬盘
Redis 默认持久化方案为 rdb。接下来把它更改为 aof
-
输入命令 cd /usr/local/redis/bin/ -> 进入到 Redis 启动目录
-
文件内容太长了,这里我直接双击打开 redis.conf 文件,这样的话修改方便
-
ctrl + F 查找 appendonly no
-
把 no 更改为 yes(注意中间空格不要删掉了)
-
如果下面的 ‘appendfilename “appendonly.aof”’ 被注释了,那么就去掉注释(当前 4.0.14 版本没有被注释)
-
ctrl + s 保存,点击 Yes to all
-
输入命令 ./redis-server redis.conf -> 启动 Redis(如果 Redis 已经是启动状态,那么先 kill 再启动)
安全组
注:如果服务器是在阿里云租用的需要设置安全组
-
登录到阿里云
-
进入到 ‘云服务器 ECS’ 控制台
-
左侧栏中选择 ‘实例’
-
进入实例详情,点击左侧栏中 ‘本实例安全组’
-
点击安全组中的 ‘配置规则’
-
点击 ‘添加安全组规则’ 按钮
-
配置 6379 端口
防火墙
注:如果服务器是在阿里云租用的需要开启防火墙。服务器是默认不开启防火墙的,感觉不安全
-
输入命令 systemctl status firewalld -> 查看防火墙状态
-
输入命令 systemctl start firewalld -> 开启防火墙
-
如果你不想开防火墙的话,那就输入命令 systemctl stop firewalld -> 关闭防火墙
-
输入命令 systemctl restart firewalld.service -> 重启防火墙
端口
注:端口操作需要在开启防火墙的情况下才能执行成功。如下两条命令只需要执行一个即可
-
输入命令 firewall-cmd --permanent --zone=public --add-port=6379/tcp -> 永久开放 6379 端口
-
输入命令 firewall-cmd --zone=public --add-port=6379/tcp -> 临时开放 6379 端口
server.c:5307:31: 错误:‘struct redisServer’没有名为‘server_xxx’的成员
redis编译报上面错误,一般是环境问题,执行下面操作可以解决
1、安装gcc套装:
yum install cpp
yum install binutils
yum install glibc
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make
2、升级gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
3、设置永久升级:
echo “source /opt/rh/devtoolset-9/enable” >>/etc/profile
4、安装redis: