Redis集群方案及实战(四)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis集群方案及实战

四.RedisCluster-Windows搭建

1.概述

  • Redis官网的最新版本是7.0,但是并没有适配Windows版本。windows版本一直都是微软在进行维护,不过不会是最新版本,是基于Redis的稳定版本制作,本文编写时GitHub上Windows版本最新版为5.0.14.1
  • Redis官方网址:redis.io/download/

  • 微软Github网址:github.com/tporadowski…
  • 建议使用5.0.14,因为5.0.14.1搭建集群时,从节点会报以下错误,具体原因未知,如果有知道的看官老爷可以评论区告知,感谢!!!

2.实战

  • 第一步:Github下载5.0.14版本Redis
  • 第二步:创建一个文件夹,将下载好的压缩包解压到一个文件夹中,并复制5份,以端口号命名,代表6个节点,最少6个节点,三主三从

  • 第三步:修改每个文件夹中的redis.windows.conf文件,修改以下几个地方,注意每个节点配置文件端口需要按照节点自己的端口号进行配置,其他参数各位可以视情况进行修改。可以修改一份后拷贝到每个文件夹中,然后修改两处端口号即可
# 是否开启保护模式,yes时外部访问redis需要配置bind ip或访问密码,线上建议开启
protected-mode no
# 每个redis的端口都需要不同
port 6379
# 是否开启集群
cluster-enabled yes
# 该参数指定了集群配置文件的位置。每个节点在运行过程中,会维护一份集群配置文件
# 每当集群信息发生变化时比如增删节点,集群内所有节点会将最新信息更新到该配置文件
# 当节点重启后,会重新读取该配置文件,获取集群信息,可以方便的重新加入到集群中
# 此集群配置文件redis节点会自行维护,注意修改端口号
cluster-config-file nodes-6379.conf
# 集群节点不可用的最大时间,单位是毫秒,如果主节点在指定时间内不可达,那么会进行故障转移
cluster-node-timeout 15000
# 云服务器上部署需指定公网ip,或者Linux系统中的Docker运行时需要指定宿主机Ip
# cluster-announce-ip 公网ip地址
# 开启AOF持久化
appendonly yes
# AOF持久化文件名称
appendfilename "appendonly.aof"
# 设置节点密码,注意所有节点密码必须一致
requirepass 123456
# 主节点连接密码,用于保护集群,保持与requirepass一致即可
masterauth 123456

  • 第四步:使用命令根据配置文件启动所有节点,此时只是启动所有节点,但是没有启动集群
redis-server.exe redis.windows.conf

  • 也可以编写启动脚本,在每个节点文件夹里面放置一个此bat文件,双击脚本即可启动节点

  • 第五步:在任意一个集群节点目录下执行命令启动集群
  • --cluster-replicas 1:一个主节点有一个从节点
  • -a:此属性指定集群节点密码,如果没有配置密码则不需要此属性
  • 注意:第一次需要执行创建集群命令,创建成功后续如果再想打开集群,那么启动所有节点即可,无需再次执行创建集群命令
redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1 -a 123456
  • 此处会询问我们是否接受他分配的节点主从关系以及HashSlot,我们输入yes即可

  • 第六步:测试
  • 注意:在创建集群之前一定不能连接节点,否则会创建集群失败
# 连接集群节点,可以连接启动的任意节点 -a 是指定节点密码
redis-cli.exe -c -h 127.0.0.1 -p 6379 -a 123456
# 查看集群信息
cluster info
# 查看当前Redis节点
info replication
# 查看当前节点槽位
cluster nodes

  • keys命令只能查当前节点,但是get、set命令可以操作所有节点

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
相关文章
|
19天前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
115 2
|
6月前
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
559 0
分布式爬虫框架Scrapy-Redis实战指南
|
5月前
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
182 5
|
3月前
|
缓存 监控 NoSQL
Redis 实操要点:Java 最新技术栈的实战解析
本文介绍了基于Spring Boot 3、Redis 7和Lettuce客户端的Redis高级应用实践。内容包括:1)现代Java项目集成Redis的配置方法;2)使用Redisson实现分布式可重入锁与公平锁;3)缓存模式解决方案,包括布隆过滤器防穿透和随机过期时间防雪崩;4)Redis数据结构的高级应用,如HyperLogLog统计UV和GeoHash处理地理位置。文章提供了详细的代码示例,涵盖Redis在分布式系统中的核心应用场景,特别适合需要处理高并发、分布式锁等问题的开发场景。
234 40
|
24天前
|
存储 NoSQL 算法
Redis的集群架构与使用经验
本文介绍了Redis的集群架构与使用经验,包括主从复制、哨兵集群及Cluster分片集群的应用场景与实现原理。内容涵盖Redis主从同步机制、数据分片存储方式、事务支持及与Memcached的区别,并讨论了Redis内存用尽时的处理策略。适用于了解Redis高可用与性能优化方案。
|
2月前
|
负载均衡 NoSQL Redis
【赵渝强老师】Redis的主从复制集群
Redis主从复制是指将一台Redis服务器的数据复制到其他Redis服务器,实现数据热备份、故障恢复、负载均衡及高可用架构的基础。主节点负责写操作,从节点同步数据并可提供读服务,提升并发处理能力。
|
3月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
874 7
|
4月前
|
NoSQL 算法 安全
redis分布式锁在高并发场景下的方案设计与性能提升
本文探讨了Redis分布式锁在主从架构下失效的问题及其解决方案。首先通过CAP理论分析,Redis遵循AP原则,导致锁可能失效。针对此问题,提出两种解决方案:Zookeeper分布式锁(追求CP一致性)和Redlock算法(基于多个Redis实例提升可靠性)。文章还讨论了可能遇到的“坑”,如加从节点引发超卖问题、建议Redis节点数为奇数以及持久化策略对锁的影响。最后,从性能优化角度出发,介绍了减少锁粒度和分段锁的策略,并结合实际场景(如下单重复提交、支付与取消订单冲突)展示了分布式锁的应用方法。
300 3
|
5月前
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
6月前
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用的算法是哈希槽分区算法。Redis集群中有16384个哈希槽(槽的范围是 0 -16383,哈希槽),将不同的哈希槽分布在不同的Redis节点上面进行管理,也就是说每个Redis节点只负责一部分的哈希槽。在对数据进行操作的时候,集群会对使用CRC16算法对key进行计算并对16384取模(slot = CRC16(key)%16383),得到的结果就是 Key-Value 所放入的槽,通过这个值,去找到对应的槽所对应的Redis节点,然后直接到这个对应的节点上进行存取操作