redis服务的部署

一、介绍

中文官网
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

1.redis与memcache

(1) redis可以用来做存储(storge)、而memcache是来做缓存(cache)。这个特点主要是因为其有“持久化”功能

(2)存储的数据有“结构”,对于memcache来说,存储的数据,只有一种类型—>“字符串”,而redis则可以存储字符串、链表、集合、有序集合、哈序结构

2.

二、安装

2.1 redis 各版本下载地址

https://redis.io/download

2.2 下载、解压并安装redis

[root@server1 ~]# tar zxf redis-5.0.8.tar.gz
[root@server1 ~]# cd redis-5.0.8
[root@server1 redis-5.0.8]# make && make install
make 过程中可能会有依赖性问题,根据报错解决即可
 gcc-c++  jemalloc-3.6.0-1.el6.x86_64.rpm   jemalloc-devel-3.6.0-1.el6.x86_64.rpm
 找到对应的包下载即可,如果解决了依赖性仍然报错的话,请删除重新解压再进行make
[root@server1 redis-5.0.8]# cd utils/
[root@server1 utils]# ./install_server.sh      
##自动生成配置文件等信息,全部回车即可

在这里插入图片描述
从上图中可以看出redis的配置文件

[root@server1 redis-5.0.8]# vim /etc/redis/6379.conf

修改主配置文件,默认在/etc/redis/6379.conf 修改, 修改监听接口为0.0.0.0
在这里插入图片描述

重启服务,配置信息生效
[root@server1 redis-5.0.8]# /etc/init.d/redis_6379 restart
查询端口是否打开
[root@server1 redis-5.0.8]# netstat -antlp | grep 6379

在这里插入图片描述

三、redis常用指令:

config get * //查看配置
select 1 //选择数据库
flushdb //清空当前数据库
flushall //清空所有数据库
move key 1 //移动key
del key //删除
rename oldkey newkey //改名
expire key 10 //设置过期时间
persist key //设置持久化
keys user* //查询
exists key //判断是否存在

redis-cli 是Redis命令行界面,这是一个简单的程序,它允许直接从终端向Redis发送命令并读取服务器发送的回复。
默认情况下redis-cli,该服务器通过127.0.0.1端口6379连接到服务器。您可以猜测,可以使用命令行选项轻松更改此设置。要指定其他主机名或IP地址,请使用-h。为了设置其他端口,请使用-p。交互式

[root@server1 ~]# redis-cli 

在这里插入图片描述

四、redis 的主从复制

Redis使用默认的异步复制,其特点是低延迟和高性能,是绝大多数 Redis 用例的自然复制模式。但是,从 Redis 服务器会异步地确认其从主 Redis 服务器周期接收到的数据量。
Redis 使用异步复制,slave 和 master 之间异步地确认处理的数据量,一个 master 可以拥有多个 slave
在这里插入图片描述

再重新配置一个redis服务,方法同上
[root@server2 utils]# vim /etc/redis/6379.conf
这里只需在配置文件最后加上
slaveof 172.25.1.1 6379

min-slaves-to-write <slave 数量>      这两行可以不加入
min-slaves-max-lag <秒数>
Redis 使用异步复制,因此无法确保 slave 是否实际接收到给定的写命令
[root@server2 utils]# /etc/init.d/redis_6379 restart

在这里插入图片描述

扫描二维码关注公众号,回复: 12569217 查看本文章
[root@server1 utils]# redis-cli
127.0.0.1:6379> info

在这里插入图片描述

[root@server2 utils]# redis-cli
127.0.0.1:6379> info

在这里插入图片描述

测试
在这里插入图片描述
在这里插入图片描述
我们可以看出在server1中输入的键值在server2中可以get到,所以实现主从关系

五、redis 的高可用

1.介绍

Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

2.配置Sentinel

开启第三台虚拟机server3,同样的方法进行redis配置
其中server1作为master server2和server3作为slave;
在这里插入图片描述

[root@server1 redis-5.0.8]# vim sentinel.conf

在这里插入图片描述
第一行配置指示 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 172.25.1.1, 端口号为 6379 , 而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)。
在这里插入图片描述
指定当主服务器掉线10秒就会被认定为服务失效
在这里插入图片描述

将这个sentinel 配置传给2和3放到/etc/redis下 用于sentinel监控
[root@server1 redis-5.0.8]# cp  sentinel.conf  /etc/redis/
[root@server1 redis]# scp sentinel.conf server2:/etc/redis/
[root@server1 redis]# scp sentinel.conf server3:/etc/redis/

3.启动 Sentinel

对于 redis-sentinel 程序, 你可以用以下命令来启动 Sentinel 系统:

对于 redis-server 程序, 你可以用以下命令来启动一个运行在 Sentinel 模式下的 Redis 服务器:

在三台机子上都执行以下命令来启动sentinel服务,查看效果

redis-sentinel /etc/redis/sentinel.conf    ##保持这个页面不能推出,可以远程连接到serve1上查看
[root@server1 ~]# redis-cli   
127.0.0.1:6379> SHUTDOWN

在这里插入图片描述

这是我们查看info,master已经是server2了,并且当原来的master.server1开启之后也不会再跳回去,server1自动变成slave
在这里插入图片描述

4.主观下线和客观下线

主观下线(Subjectively Down, 简称 SDOWN)指的是单个 Sentinel 实例对服务器做出的下线判断。
客观下线(Objectively Down, 简称 ODOWN)指的是多个 Sentinel 实例在对同一个服务器做出 SDOWN 判断, 并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后, 得出的服务器下线判断。 (一个 Sentinel 可以通过向另一个 Sentinel 发送 SENTINEL is-master-down-by-addr 命令来询问对方是否认为给定的服务器已下线。)
如果一个服务器没有在 master-down-after-milliseconds 选项所指定的时间内, 对向它发送 PING 命令的 Sentinel 返回一个有效回复(valid reply), 那么 Sentinel 就会将这个服务器标记为主观下线。
服务器对 PING 命令的有效回复可以是以下三种回复的其中一种:
返回 +PONG 。
返回 -LOADING 错误。
返回 -MASTERDOWN 错误。
客观下线条件只适用于主服务器: 对于任何其他类型的 Redis 实例, Sentinel 在将它们判断为下线前不需要进行协商, 所以从服务器或者其他 Sentinel 永远不会达到客观下线条件。
只要一个 Sentinel 发现某个主服务器进入了客观下线状态, 这个 Sentinel 就可能会被其他 Sentinel 推选出, 并对失效的主服务器执行自动故障迁移操作。

六、redis集群

1.Redis集群介绍

Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。
Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.
Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:

  • 自动分割数据到不同的节点上。
  • 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。

2.搭建并使用集群

(1)创建实例
搭建集群的第一件事情我们需要一些运行在 集群模式的Redis实例. 这意味这集群并不是由一些普通的Redis实例组成的,集群模式需要通过配置启用,开启集群模式后的Redis实例便可以使用集群特有的命令和特性了。

首先, 让我们进入一个新目录, 并创建六个以端口号为名字的子目录, 稍后我们在将每个目录中运行一个 Redis 实例: 命令如下:

cd /usr/local/
mkdir  redis
cd  redis
mkdir 7000
mkdir 700{1..6}

在文件夹 7000 至 7006中, 各创建一个 redis.conf 文件, 文件的内容可以使用上面的示例配置文件, 但记得将配置中的端口号从 7000 改为与文件夹名字相同的号码。
在这里插入图片描述

下面是一个最少选项的集群的配置文件:

[root@server1 ~]# cd 7000/
[root@server1  7000]# vim redis.conf
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes

文件中的 cluster-enabled 选项用于开实例的集群模式, 而 cluster-conf-file 选项则设定了保存节点配置文件的路径, 默认值为 nodes.conf.节点配置文件无须人为修改, 它由 Redis 集群在启动时创建, 并在有需要时自动进行更新。
要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。

打开实例

[root@server1 7000]# redis-server redis.conf

用ps ax 查看进程,查看cluster是否创建成功
在这里插入图片描述
(2) 搭建集群
现在我们已经有了7正在运行中的 Redis 实例, 接下来我们需要使用这些实例来创建集群, 并为每个节点编写配置文件。
通过使用 Redis 集群命令行工具 redis-trib , 编写节点配置文件的工作可以非常容易地完成: redis-trib 位于 Redis 源码的 src 文件夹中, 它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群, 检查集群, 或者对集群进行重新分片(reshared)等工作。

[root@server1 ~]# redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

这个命令在这里用于创建一个新的集群, 选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
之后跟着的其他参数则是这个集群实例的地址列表,3个master3个slave redis-trib 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中,让各个节点开始互相通讯,最后可以得到如下信息:
在这里插入图片描述在这里插入图片描述
这表示集群中的 16384 个槽都有至少一个主节点在处理, 集群运作正常。

3.使用集群

测试 Redis 集群比较简单的 redis-cli , 接下来我们将使用 redis-cli 为例来进行演示:
三主信息

[root@server1 ~]# redis-cli --cluster info 127.0.0.1:7000
127.0.0.1:7000 (fb6af12f...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:7001 (e27ba0ce...) -> 0 keys | 5462 slots | 1 slaves.
127.0.0.1:7002 (6441e2ec...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
[root@server1 ~]# redis-cli -c -p 7000

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Sun__s/article/details/112724787
今日推荐