redis安装

本文详细介绍了Redis单实例的安装过程,包括依赖安装、编译与配置,并展示了如何启动与停止服务。接着,文章讲解了Redis Sentinel的配置与使用,实现了一主两从的高可用架构。最后,通过3主3从的配置,搭建了一个Redis Cluster伪集群,涵盖了集群创建、节点管理及关键命令的介绍。
摘要由CSDN通过智能技术生成

一、redis单实例安装

  1. 下载安装
cd /data/program/redis
wget https://download.redis.io/releases/redis-6.0.9.tar.gz

tar -zxvf redis-6.0.9.tar.gz

  1. 安装gcc依赖
    Redis是C语言编写的,编译需要GCC。
    Redis6.x.x版本支持了多线程,需要gcc的版本大于4.9,但是CentOS7的默认版本是4.8.5。
    查看gcc的版本:
gcc -v

#提示 -bash: gcc: command not found

yum install 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

echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

在这里插入图片描述

  1. 编译安装
cd redis-6.0.9/src
make install

安装成功的结果是src目录下面出现服务端和客户端的脚本
redis-server
redis-cli
redis-sentinel

  1. 修改配置文件
    默认的配置文件是/data/program/redis/redis-6.0.9/redis.conf
    后台启动,不然窗口一关服务就挂了
#守护线程启动(后台启动)
daemonize yes

下面一行必须改成 bind 0.0.0.0,否则只能在本机访问

bind 127.0.0.1  ->  bind 0.0.0.0

如果需要密码访问,取消requirepass的注释,在外网(比如阿里云)这个必须要配置!

requirepass yourpassword
  1. 使用指定配置文件启动Redis
/data/program/redis/redis-6.0.9/src/redis-server /data/program/redis/redis-6.0.9/redis.conf

查看端口是否启动成功:

netstat -an|grep 6379
  1. 进入客户端
/data/program/redis/redis-6.0.9/src/redis-cli
  1. 停止redis(在客户端中)
redis> shutdown
  1. 配置别名的步骤
vim ~/.bashrc

添加两行:

alias redis='/data/program/redis/redis-6.0.9/src/redis-server /data/program/redis/redis-6.0.9/redis.conf'
alias rcli='/data/program/redis/redis-6.0.9/src/redis-cli'

编译生效:

source ~/.bashrc

这样就可以用redis启动服务,rcli进入客户端了

  1. Redis可视化客户端
    redis-desktop-manager

二、Redis6.0.9一主二从Sentinel

开启哨兵模式,至少需要3个Sentinel实例(奇数个,否则无法选举Leader)。
本例通过3个Sentinel实例监控3个Redis服务(1主2从)。

IP地址	          节点角色&端口
192.168.184.45	Master:6379 / Sentinel : 26379
192.168.184.46	Slave :6379 / Sentinel : 26379
192.168.184.47	Slave :6379 / Sentinel : 26379

网络结构图:
在这里插入图片描述

  1. 修改redis.conf
    在46,47的redis.conf配置中找到注释的这一行
# replicaof <masterip> <masterport>
replicaof 192.168.184.45 6379
  1. 在45、46、47创建sentinel配置文件(单例安装后根目录下默认有sentinel.conf,可以先备份默认的配置)
cd /usr/local/soft/redis-6.0.9
mkdir logs
mkdir rdbs
mkdir sentinel-tmp
cp sentinel.conf sentinel.conf.bak
>sentinel.conf
vim sentinel.conf

sentinel.conf配置文件内容,三台机器相同

daemonize yes
port 26379
protected-mode no
dir "/usr/local/soft/redis-6.0.9/sentinel-tmp"
sentinel monitor redis-master 192.168.184.45 6379 2
sentinel down-after-milliseconds redis-master 30000
sentinel failover-timeout redis-master 180000
sentinel parallel-syncs redis-master 1
配置作用
protected-mode是否允许外部网络访问,yes不允许
dirsentinel的工作目录
sentinel monitorsentinel监控的redis主节点
down-after-milliseconds(毫秒)master宕机多久,才会被Sentinel主观认为下线
sentinel failover-timeout(毫秒)1 同一个sentinel对同一个master两次failover之间的间隔时间。2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。3.当想要取消一个正在进行的failover所需要的时间。 4.当进行failover时,配置所有slaves指向新的master所需的最大时间。
parallel-syncs这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。
  1. 在3台机器上分别启动Redis和Sentinel
cd /data/program/redis/redis-6.0.9/src
./redis-server ../redis.conf
./redis-sentinel ../sentinel.conf

哨兵节点的另一种启动方式:

./redis-server ../sentinel.conf --sentinel
  1. 在3台机器上查看集群状态:
$ /data/program/redis/redis-6.0.9/src/redis-cli
redis> info replication

主节点显示:
在这里插入图片描述
从节点显示:
在这里插入图片描述
从节点执行set报错
在这里插入图片描述
5. 模拟master宕机

redis>shutdown

主节点变成192.168.184.47
在这里插入图片描述
在这里插入图片描述
注意看sentinel.conf里面的redis-master被修改了,变成了当前的master端口

sentinel monitor redis-master 192.168.184.47 6379 2

再次启动原master节点 192.168.184.45,发现它成为当前master 192.168.184.47的从节点
在这里插入图片描述
在这里插入图片描述

三、Redis Cluster集群(3主3从伪集群)

为了节省机器,我们直接把6个Redis实例安装在同一台机器上(3主3从),只是使用不同的端口号。
机器IP 192.168.99.112
可以跟单机的redis安装在同一台机器上,因为数据目录不同,没有影响。

cd /data/program/redis/redis-6.0.9
mkdir redis-cluster
cd redis-cluster
mkdir 7291 7292 7293 7294 7295 7296

复制redis配置文件到7291目录

cp /data/program/redis/redis-6.0.9/redis.conf /data/program/redis/redis-6.0.9/redis-cluster/7291

修改7291的redis.conf配置文件,内容:

cd /data/program/redis/redis-6.0.9/redis-cluster/7291
>redis.conf
vim redis.conf
port 7291
daemonize yes
protected-mode no
dir /data/program/redis/redis-6.0.9/redis-cluster/7291/
cluster-enabled yes
cluster-config-file nodes-7291.conf
cluster-node-timeout 5000
appendonly yes
pidfile /var/run/redis_7291.pid

把7291下的redis.conf复制到其他5个目录。

cd /data/program/redis/redis-6.0.9/redis-cluster/7291
cp redis.conf ../7292
cp redis.conf ../7293
cp redis.conf ../7294
cp redis.conf ../7295
cp redis.conf ../7296

批量替换内容

cd /data/program/redis/redis-6.0.9/redis-cluster
sed -i 's/7291/7292/g' 7292/redis.conf
sed -i 's/7291/7293/g' 7293/redis.conf
sed -i 's/7291/7294/g' 7294/redis.conf
sed -i 's/7291/7295/g' 7295/redis.conf
sed -i 's/7291/7296/g' 7296/redis.conf

启动6个Redis节点

cd /data/program/redis/redis-6.0.9
./src/redis-server redis-cluster/7291/redis.conf
./src/redis-server redis-cluster/7292/redis.conf
./src/redis-server redis-cluster/7293/redis.conf
./src/redis-server redis-cluster/7294/redis.conf
./src/redis-server redis-cluster/7295/redis.conf
./src/redis-server redis-cluster/7296/redis.conf

是否启动了6个进程

ps -ef|grep redis

在这里插入图片描述

创建集群

cd /data/program/redis/redis-6.0.9/src/
redis-cli --cluster create 192.168.99.112:7291 192.168.99.112:7292 192.168.99.112:7293 192.168.99.112:7294 192.168.99.112:7295 192.168.99.112:7296 --cluster-replicas 1

Redis会给出一个预计的方案,对6个节点分配3主3从,如果认为没有问题,输入yes确认
在这里插入图片描述
在这里插入图片描述

重置集群的方式是在每个节点上个执行cluster reset,然后重新创建集群。

连接到客户端

redis-cli -p 7291
redis-cli -p 7292
redis-cli -p 7293

在这里插入图片描述

新增节点如何重新分片:
一个新节点add-node加入集群后,是没有slots的。

redis-cli --cluster reshard 目标节点(IP端口)

这时会要求你输入分配的槽位,生成reshard计划,确定就会迁移数据

集群命令:

cluster info :打印集群的信息
cluster nodes :列出集群当前已知的所有节点(node),以及这些节点的相关信息。
cluster meet :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id> :从集群中移除 node_id 指定的节点(保证空槽道)。
cluster replicate <node_id> :将当前节点设置为 node_id 指定的节点的从节点。
cluster saveconfig :将节点的配置文件保存到硬盘里面。

槽slot命令:

cluster addslots [slot …] :将一个或多个槽(slot)指派(assign)给当前节点。
cluster delslots [slot …] :移除一个或多个槽对当前节点的指派。
cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
cluster setslot migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
cluster setslot importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
cluster setslot stable :取消对槽 slot 的导入(import)或者迁移(migrate)。

键命令:

cluster keyslot :计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot :返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot :返回 count 个 slot 槽中的键
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值