快捷搜索:  朋友圈  as  伪静态  次数  响应式  虎牙  浏览数  anniu

如何保证 Redis 高可用和高并发(主从+哨兵+集群)

1. 概述

Redis 作为一种高性能的内存数据库普遍用于目前主流的分布式架构系统中。为了提高系统的容错率使用多实例的 Redis 也是必不可免的但同样复杂度也相比单实例高出很多。

那么如何保证 Redis 的高并发和高可用

Redis 主要有三种集群方式用来保证高并发和高可用主从复制哨兵模式和集群。

2. 主从复制

在分布式系统中为了解决单点问题通常会把数据复制多个副本部署到其他机器满足故障恢复和负载均衡等需求。Redis 也是如此它为我们提供了复制功能实现了相同数据的多个 Redis 副本。

复制功能是高可用 Redis 的基础哨兵和集群都是在复制的基础上实现高可用的。

在复制的概念中数据库分为两类。一类是主数据库master一类是从数据库slave。 master 可以进行读写操作当写操作发生变化时会自动将数据同步给 slave。

slave 一般只提供读操作并接收主数据库同步过来的数据。

一个 master 可以对应多个 slave。一个 slave 只能对应一个 master。

引入主从复制的目的有两个

读写分离分担 master 的压力二是容灾备份。

Redis 的复制拓扑结构可以支持单层或多层复制关系根据拓扑复杂性可以分为以下三种一主一从、一主多从、树状主从结构。

2.1 一主一从

1、建立复制

参与复制的 Redis 实例划分为主节点master和从节点slave。默认情况下Redis 都是主节点。每个从节点只能有一个主节点而主节点可以同时具有多个从节点。复制的数据流是单向的只能由主节点复制到从节点。

配置复制的方式有以下三种

配置文件

配置文件中加入slaveof {masterHost } {masterPort}随 Redis 启动生效。

启动命令

在 redis-server 启动命令后加入--slaveof {masterHost} {masterPort }生效。

客户端命令

Redis服务器启动后直接使用命令 slaveof {masterHost} { masterPort}生效。

综上所述slaveof 命令在使用时可以运行期动态配置也可以提前写到配置文件中。

为了方便测试我们在同一台虚拟机上启动 2 个 Redis 实例端口分别为 6379 和 6380由于在同一台机器上所以需要修改 6380 的配置文件主要修改以下几个选项

# 端口号port 6380# 日志文件logfile /usr/local/redis/log/6380.log# 快照文件dbfilename 6380-dump.rdb# 快照文件存放路径dir ../

此时分别启动 6379 和 6380这里的 6379 端口由于之前的操作所以存在一部分数据而 6380 由于上面配置文件的改动所以并不会存在数据。

您可能还会对下面的文章感兴趣: