Linux-Redis安装

x33g5p2x  于2022-04-12 转载在 Linux  
字(6.7k)|赞(0)|评价(0)|浏览(259)

以下全是在CentOS-7中安装的 ,注意所有的redis服务密码保持一致123456

Redis单机版

这种方式的话,单纯的只是作用缓存,来减少数据库压力

Redis 版本为redis-6.0.6 一般将文件放入/usr/local/redis/下面

mkdir -p /usr/local/redis/ 

cd  /usr/local/redis/

1、下载redis包:

yum -y  install wget

wget http://download.redis.io/releases/redis-6.0.6.tar.gz

2、解压:

tar -zxvf redis-6.0.6.tar.gz

3、安装reids需要的依赖工具

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、安装reids

进入redis文件夹:

cd  /usr/local/redis/redis-6.0.6

然后直接 make

出现下面信息就安装成功了

5、单机版修改redis配置文件

vi /usr/local/redis/redis-6.0.6/redis.conf
bind xx  #必须注释掉否则只能当前本机访问 

protected-mode 改为no  #支持外网访问
 
daemonize no 改成daemonize yes       # 后台运行

requirepass 123456  #redis的密码

6、到这里就已经安装完成了,可以启动了。

/usr/local/redis/redis-6.0.6/src/redis-server  /usr/local/redis/redis-6.0.6/redis.conf &

Redis主从(一主2从)

这种方式的话,可能会在redis中存储一些持久化的内容,比如分布式锁,或者其他数据…

那么我们为了实现Redis高可用就需要实现Redis主从配置,Redis最低1主2从 主节点写 , 从节点读

注意: 如果要是在从节点进行写的话就会报错: (error) READONLY You can’t write against a read only replica.

master and slaveipport
master192.168.81.1456379
slave1192.168.81.1466379
slave2192.168.81.1476381

主服务器配置

修改redis.conf文件如下

vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx  #必须注释掉否则只能当前本机访问 
protected-mode 改为no  #支持外网访问
requirepass "123456"  # 设置密码
daemonize no 改成daemonize yes       # 后台运行
appendonly yes # 开启持久化
appendfsync 是always #  意思是每写一次就将该操作追加到aof的日志中,防止主节点宕机后数据丢失

2个从服务器配置

修改redis.conf文件如下

vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx  #必须注释掉否则只能当前本机访问 
protected-mode 改为no  #支持外网访问
requirepass "123456"  # 设置密码
daemonize  改成daemonize yes       # 后台运行

# 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
slaveof 192.168.81.145 6379
# 主服务器密码 没有的话跳过,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
masterauth 123456

上述内容主要是配置Redis从服务器,从服务器比主服务器多一个slaveof的配置和masterauth密码配置。

检查是否配置成功

进入192.168.81.145的控制台中输入下面命令

info replication

而从节点的话会显示 role:slave 自行检查

确认是否真从节点复制主节点的数据

  1. 在主节点控制台中输入 set name hu
  2. 在从节点控制台中输入 get name (如果结果出现 hu 那么就配置成功了)

Redis哨兵模式

主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式

一、哨兵模式概述

哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。

这里的哨兵有两个作用

  • 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
  • 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。

用文字描述一下**故障切换(failover)**的过程。假设主服务器宕机,哨兵1先检测到这个结果,

系统并不会马上进行failover(故障切换)过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线

当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的。

一般哨兵模式都是配置3个哨兵和1主2从的Redis服务器来演示这个过程。

服务类型是否是主服务器IP地址端口
Redis192.168.11.1286379
Redis192.168.11.1296379
Redis192.168.11.1306379
Sentinel-192.168.11.12826379
Sentinel-192.168.11.12926379
Sentinel-192.168.11.13026379

主服务,修改redis.conf文件如下

vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx  #必须注释掉否则只能当前本机访问 
protected-mode 改为no  #支持外网访问
requirepass "123456"  # 设置密码
daemonize no 改成daemonize yes       # 后台运行
appendonly yes # 开启持久化
appendfsync 是always #  意思是每写一次就将该操作追加到aof的日志中,防止主节点宕机后数据丢失

配置3个Redis的主从服务器,修改redis.conf文件如下

vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx  #必须注释掉否则只能当前本机访问 
protected-mode yes 改为no  #支持外网访问
requirepass "123456"  # 设置密码
daemonize 改成daemonize yes       # 后台运行

# 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
slaveof 192.168.81.145 6379
# 主服务器密码 没有的话跳过,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
masterauth 123456

配置3个哨兵,每个哨兵的配置都是一样的。在Redis安装目录下有一个sentinel.conf文件

vi /usr/local/redis/redis-6.0.6/sentinel.conf
# 禁止保护模式
protected-mode no
# 配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,
# 192.168.11.128代表监控的主服务器,6379代表端口,
# 2 代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。
sentinel monitor mymaster 192.168.11.128 6379 2
# sentinel author-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码
sentinel auth-pass mymaster 123456

启动哨兵服务

/usr/local/redis/redis-6.0.6/src/redis-sentinel  /usr/local/redis/redis-6.0.6/sentinel.conf &

注意启动的顺序。首先是主机的Redis服务,然后启动从机的服务,最后启动3个哨兵的服务。

Redis集群模式

Redis-cluster集群概念

一般是作用于数据分片,当一个redis不够用了, 需要多个master同时运转

  • 由多个Redis服务器组成的分布式网络服务集群;
  • 集群之中有多个Master主节点,每一个主节点都可读可写;
  • 节点之间会互相通信,两两相连;
  • Redis集群无中心节点。

集群节点复制

  • 在Redis-Cluster集群中,可以给每一个主节点添加从节点,主节点和从节点直接遵循主从模型的特性。
  • 当用户需要处理更多读请求的时候,添加从节点可以扩展系统的读性能。(也就是主写从读)

故障转移
Redis集群的主节点内置了类似Redis Sentinel的节点故障检测和自动故障转移功能,当集群中的某个主节点下线时,集群中的其他在线主节点会注意到这一点,并对已下线的主节点进行故障转移。
集群进行故障转移的方法和Redis Sentinel进行故障转移的方法基本一样,不同的是,在集群里面,故障转移是由集群中其他在线的主节点负责进行的,所以集群不必另外使用Redis Sentinel(哨兵)。

集群分片策略
Redis-cluster分片策略,是用来解决key存储位置的。
集群将整个数据库分为16384个槽位slot,所有key-value数据都存储在这些slot中的某一个上。一个slot槽位可以存放多个数据,key的槽位计算公式为:slot_number=crc16(key)%16384,其中crc16为16位的循环冗余校验和函数。
集群中的每个主节点都可以处理0个至16383个槽,当16384个槽都有某个节点在负责处理时,集群进入上线状态,并开始处理客户端发送的数据命令请求。

集群redirect转向

  • 由于Redis集群无中心节点,请求会随机发给任意主节点;
  • 主节点只会处理自己负责槽位的命令请求,其它槽位的命令请求,该主节点会返回客户端一个转向错误;
  • 客户端根据错误中包含的地址和端口重新向正确的负责的主节点发起命令请求。

redis-cluster集群配置

服务类型是否是主服务器IP地址端口
Redis1192.168.11.1286379
Redis2192.168.11.1296379
Redis3192.168.11.1306379
slave1192.168.11.1316379
slave2192.168.11.1326379
slave3192.168.11.1336379

每一个主节点必须对应一个子节点

主服务器配置

修改redis.conf文件如下

vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx  #必须注释掉否则只能当前本机访问 
protected-mode 改为no  #支持外网访问
requirepass "123456"  # 设置密码
daemonize no 改成daemonize yes       # 后台运行
appendonly yes # 开启持久化
appendfsync 是always #  意思是每写一次就将该操作追加到aof的日志中,防止主节点宕机后数据丢失
cluster-enabled yes # 开启集群

从服务器配置

修改redis.conf文件如下

vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx  #必须注释掉否则只能当前本机访问 
protected-mode 改为no  #支持外网访问
requirepass "123456"  # 设置密码
daemonize  改成daemonize yes # 后台运行

# 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
slaveof 192.168.81.145 6379  
# 主服务器密码 没有的话跳过,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
masterauth 123456

上述内容主要是配置Redis从服务器,从服务器比主服务器多一个slaveof的配置和masterauth密码配置。

redis工具指令

查看Redis是否正在运行

ps -aux | grep redis

结果如下图:

redis-cli(客户端)

redis-cli是连接本地redis服务的一个命令,通过该命令后可以既然怒redis的脚本控制台。如下图

打开本地redis(客户端)

/usr/local/redis/redis-6.0.6/src/redis-cli

输入exit可以退出redis脚本控制台

如果是集群的话

客户端启动方式有些改变

/usr/local/redis/redis-6.0.6/src/redis-cli  --cluster create 172.16.1.105:6379 172.16.1.105:6380 172.16.1.105:6381 172.16.1.105:6382 172.16.1.105:6383 172.16.1.105:6384  --cluster-replicas 1

查看配置是否生效

在redis-cli 里输入 CONFIG get requirepass

会出现 (error) NOAUTH Authentication required.

决办法输入配置文件中,我们设置的密码

AUTH 123456 我们在配置文件中的密码就行这个

然后在输入 CONFIG get requirepass 就能出现你在配置文件中的密码了

关闭运行中的Redis服务

查询redis程序: ps -aux | grep redis

杀死redis程序 kill -9 xxxid号 (root后面的就是 id)

kill -9 127170

6379端口号

firewall-cmd --zone=public --add-port=6379/tcp --permanent

其他问题

redis里基本能让外网访问的配置都配了怎么外网还是访问不了??

我遇到问题是防火墙没有, 我从新安装一个防火墙,然后开启了对应的端口号就好了

永久解决办法:

如果没有防火墙的话先下载(有防火墙跳过)

1) yum install iptables
2) yum install iptables-services

然后执行下面命令

3)systemctl start firewalld
4)firewall-cmd --zone=public --add-port=6379/tcp --permanent

点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复如有侵权,请私信联系我感谢,配合,希望我的努力对你有帮助^_^

相关文章