Redis 主从架构搭建、压测

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
性能测试 PTS,5000VUM额度
简介: Redis 主从架构搭建、压测

Redis 主从架构搭建、压测

你好,我是悟空。

上周给大家深度剖析了 Redis 主从架构的原理,读者朋友们觉得还不错,大白话的讲解,非常容易看懂。

这次我们来讲解下主从架构的搭建、测试及压测。因为大部分都是纯手工操作,所以看起来会有些枯燥,不过没关系,先点赞收藏,也许某天就用上了~

主从架构搭建

本架构方案是一主一从,一个主节点负责写,一个从节点负责读。如果从节点能够读到主节点的数据,就表示从节点可以拷贝主节点中的数据,主从架构搭建成功。

一主一从的方案

Redis 环境搭建

两台机器上都需要安装下 Redis。参考官方文档安装。

配置主从架构和读写分离

需要配置

  • 从节点是否是只读的。配置项:slave-read-only。默认配置,不需要改。
  • 配置从节点的安全认证密码,配置项:masterauth(从节点),requirepass(主节点)。
  • 配置从节点属于哪个主节点,配置项:slaveof。
  • 配置 Redis 绑定自己的 IP 地址,配置项:bind。

配置步骤

(1)首先需要关闭两台服务器上的 Redis:

redis-cli shutdown

(2)第二台机器作为从节点,配置如下:

vi /etc/redis/6379.conf

slave-read-only yes
masterauth abc123
slaveof eshop-cache01 6379
bind 192.168.10.115

(3)第一台机器作为主节点,配置如下:

vi /etc/redis/6379.conf

slave-read-only yes
requirepass abc123
bind 192.168.10.86

(4)重启Redis 实例

先重启主节点上的 Redis 实例,再启动从节点上的 Redis 实例:

cd /etc/init.d
./redis_6379 start

(5)查看 Redis 实例是否启动成功

ps -ef | grep redis

(6)查看从节点的信息

# 通过 ip 地址、端口号、账号、密码连接 Redis
redis-cli -h 192.168.10.115 -p 6379 -a abc123
# 查看配置信息
info relication

(7)查看主节点的信息

# 通过 ip 地址、端口号、账号、密码连接 Redis
redis-cli -h 192.168.10.86 -p 6379 -a abc123
# 查看配置信息
info replication

mark

以防端口不通问题,可以在两台机器上打开 6379 端口:

iptables -A INPUT -ptcp --dport  6379 -j ACCEPT

测试主从同步

主从原始数据是否已同步

首先查看主从节点上 Redis 中的数据是否一致:

get keys

发现 key 的数量和名字都是一样的,验证通过。

挑选一个 key,看下 value 是否相同:

get key11

结果是相同的,验证通过

mark

测试主从数据实时同步

主节点上设置一个 key12

set key12 120

从节点上查看 key12 的值

get key12

从节点上查询到 key12 的值是 120,说明主从同步没问题,验证通过。

测试从节点只读

读写分离架构中,从节点是只读的,只能查询,所以 set 一个 key 会报错,验证通过。

压测主从环境

Redis 安装文件自带压测工具: redis-benchmark。

压测工具的命令格式如下:

redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]

我们就使用默认的参数进行测试:

  • 并发数:50 个。Number of parallel connections (default 50)
  • 请求总数:共 10 W 个请求。Total number of requests (default 100000)
  • 每个GET/SET 命令的字节数:2 Bytes。 Data size of SET/GET value in bytes (default 2)
cd /usr/local/bin
./redis-benchmark -h 192.168.10.115 -p 6379 -c 50 -n 100000 -d 2

测试结果会有多个命令的压测结果:如 PING_INLINE、PING_BULK 、SET、GET、INCR、LPUSH、RPUSH 、LPOP、RPOP 、SADD、SPOP、LPUSH、LRANGE_100、LRANGE_300、LRANGE_500、MSET

来看下 GET 命令的压测结果:

====== GET ======
  100000 requests completed in 1.51 seconds
  50 parallel clients
  2 bytes payload
  keep alive: 1

99.57% <= 1 milliseconds
99.77% <= 4 milliseconds
99.86% <= 5 milliseconds
99.92% <= 6 milliseconds
99.94% <= 7 milliseconds
99.99% <= 9 milliseconds
100.00% <= 9 milliseconds
66050.20 requests per second

说明

  • 10W 请求在 1.51 秒完成。
  • 99.57% 的请求在 1 毫秒内完成。
  • 99.77% 的请求在 4 毫秒内完成。
  • 所有的请求都在 9 毫秒内完成。
  • 每秒发送 66050 个请求。

其他命令的结果和 Get 命令也是类似的结果,不再展开说明。

至此,Redis 的主从架构搭建和压测已完成了。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5月前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
1月前
|
存储 缓存 NoSQL
【赵渝强老师】基于Redis的旁路缓存架构
本文介绍了引入缓存后的系统架构,通过缓存可以提升访问性能、降低网络拥堵、减轻服务负载和增强可扩展性。文中提供了相关图片和视频讲解,并讨论了数据库读写分离、分库分表等方法来减轻数据库压力。同时,文章也指出了缓存可能带来的复杂度增加、成本提高和数据一致性问题。
【赵渝强老师】基于Redis的旁路缓存架构
|
18天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
35 8
|
5月前
|
NoSQL 算法 Java
(十三)全面理解并发编程之分布式架构下Redis、ZK分布式锁的前世今生
本文探讨了从单体架构下的锁机制到分布式架构下的线程安全问题,并详细分析了分布式锁的实现原理和过程。
115 6
|
5月前
|
NoSQL Redis
Redis 主从复制架构配置及原理
Redis 主从复制架构配置及原理
70 5
|
5月前
|
NoSQL Redis 开发工具
Redis性能优化问题之检查 Redis 实例是否启用了透明大页机制,如何解决
Redis性能优化问题之检查 Redis 实例是否启用了透明大页机制,如何解决
|
5月前
|
存储 缓存 NoSQL
高并发架构设计三大利器:缓存、限流和降级问题之Redis用于搭建分布式缓存集群问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之Redis用于搭建分布式缓存集群问题如何解决
104 1
|
5月前
|
监控 NoSQL Ubuntu
|
6月前
|
监控 NoSQL Java
redis哨兵架构
不过为了高可用一般都推荐至少三个哨兵节点。为什么推荐奇数个哨兵节点跟集群奇数个master节点类似。
45 0
redis哨兵架构
|
5月前
|
存储 NoSQL 固态存储
架构设计篇问题之将计数全部存储在Redis中的问题如何解决
架构设计篇问题之将计数全部存储在Redis中的问题如何解决