有些代码或者步骤可能有些区别和不妥,欢迎指正
参考博客:ubuntu 安装redis
我安装的redis版本为5.0.14.1
虚拟机有网络应该是可以使用命令下载的
redis下载
首先在windows下将安装包下载下来,再传输到虚拟机中。
我使用的是xftp进行文件传输和连接虚拟机
先使用ifconfig命令查看本机ip
使用xftp建立连接
主机填写查到的ip地址,用户名密码填写你的。
连接建立后将下载的文件拖拽过去即可:
一直连接不上的可以看看虚拟机中是否配置了ssh服务,未配置的需要下载ssh服务
下载:
sudo apt install openssh-server
开启:
sudo service sshd start
我将其移动到usr/local下面(mv指令显示权限不够,需要root权限)
进入redis文件夹,安装redis
初始的redis下不包含redis.server和redis.cli等文件,需要安装后才会有,执行make命令
注意
在这里没有make工具的需要下载,在更新时遇到类似
: 仓库 “https://mirrors.tuna.tsinghua.edu.cn/ubuntu impish-backports Release” 没有 Release 文件。
问题的需要更换软件源,可参考下面的博客
仓库 “https://mirrors.tuna.tsinghua.edu.cn/ubuntu xenial Release” 没有 Release 文件
下载make工具
继续操作:
再在redis的src目录下看见redis-cli和server即成功
修改配置文件redis.conf
打开文件:
gedit redis.conf
修改bind,在末尾追加本机的ip地址(允许其他服务器连接)
启动redis服务
src目录下,执行启动命令(指定配置文件启动redis)
可以通过修改redis.conf中的daemonize,设置为yes,则切换启动方式为后台启动
连接redis客户端
![在这里插入图片描述](https://img-blog.csdnimg.cn/044047193a874951a31bb2ecd0e3bede.png
搭建一主多从
配置一主两从:
桌面新建一个myredis文件夹,复制redis.conf到文件夹
创建三个配置文件redis6378.conf,redis6380.conf,redis6381.conf,并在文件中写入相应内容(通过include引入原始配置)
同理创建其他两个文件:
只不过要加上
masterauth 123456
启动三台服务器:
使用info replication可以打印主从复制的相关信息
配置从机
slaveof <主机ip>
如下可以在命令行设置(从服务器挂掉重启后会重新变为单独的主机)
也可以在conf中直接设置(这样在从服务器挂掉重启后,仍旧是从服务器)
最开始我使用6379为主机,但是一直连接不上从库,原因是redis的原始默认端口为6379,而我自己又配置了一个6379的文件,之后我使用了6378作为主机。
1、当从连接上主服务器之后,从服务器向主服务发送进行数据同步消息
2、主服务器接到从服务器发送过来同步消息,把主服务器数据进行持久化,rdb文件,把rdb文件发送从服务器,从服务器拿到rdb进行读取。
3、每次主服务器进行写操作之后,和从服务器进行数据同步
参考链接:
Redis 的主从同步,及两种高可用方式
能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
参考博客
1、在myredis文件夹下创建sentinel.conf文件写入如下语句
port 26378
sentinel monitor mymaster 127.0.0.1 6378 1
sentinel auth-pass mymaster 123456
其中mymaster为监控对象起的服务器名称,为至少有多少个哨兵同意迁移的数
因为我的主服务器不是默认的6379所以要进行port设置。
如果设置了redis密码就必须设置上述第三行,否则哨兵设置不生效,报错:
Next failover delay: I will not start a failover before
没有启动成功的可能需要下面的下载命令。
sudo apt install redis-sentinel
这时把主服务器shutdown
哨兵监听显示会尝试连接断掉的服务器,连接失败后,选举6380服务器为新Master
可以看到6380成为了新的主服务器
重启6378服务器
在Linux上,如果开了redis的守护进程,kill -9和redis-cli shutdown 命令是无法杀掉 redis 进程的 ,杀掉就会重新启动一个新的进程
可以使用这个命令:
/etc/init.d/redis-server stop