Windows下搞定Redis各种模式搭建,主从哨兵分片全覆盖教程
- 问答
- 2026-01-01 04:07:10
- 3
主要基于Redis官方文档、CSDN技术博客“Redis实战笔记”系列、知乎专栏“分布式缓存漫谈”以及个人实践总结。
Windows下搞定Redis各种模式搭建,主从哨兵分片全覆盖教程
想在Windows上把Redis玩明白,单机启动只是第一步,真正要用起来,尤其是想保证数据不丢、服务高可用,就得搞懂主从、哨兵和分片集群这几种模式,下面我就用大白话把这几种模式在Windows下的搭建方法讲清楚。
第一部分:准备工作——先把Redis弄到Windows上
Redis官方并不直接提供Windows版本的下载,但微软开源团队维护了一个Windows移植版,来源:微软archive项目。
- 去GitHub上搜索并下载最新的“MicrosoftArchive/redis” releases版本,是一个.zip压缩包。
- 解压到你想放的目录,
D:\Redis,解压后你会看到一堆文件,redis-server.exe就是服务端程序,redis-cli.exe是客户端连接工具。 - 打开一个命令行窗口(CMD),切换到Redis目录,直接输入
redis-server.exe回车,如果看到一个大的ASCII艺术字样的Redis logo,并且没有报错,说明单机版Redis已经成功启动了,这是所有模式的基础。
第二部分:主从复制模式——搞个数据备份
主从模式就是弄一个主库(Master)和若干个从库(Slave),主库负责写数据,从库自动从主库那里同步数据,主要用来做数据备份和读操作的负载均衡,来源:Redis官方文档Replication章节。
- 准备两个Redis实例:因为是在一台机器上模拟,我们需要两份Redis,直接复制整个Redis文件夹,比如一份叫
Redis-Master,另一份叫Redis-Slave。 - 配置主库(Master):主库的配置基本不用动,用默认的
redis.windows.conf文件就行,确保port是默认的6379。 - 配置从库(Slave):打开
Redis-Slave文件夹里的redis.windows.conf文件,找到并修改两个地方:port 6380(避免端口冲突,换个端口)- 找到
# replicaof <masterip> <masterport>这一行,去掉注释 ,改成replicaof 127.0.0.1 6379,这行命令的意思就是告诉这个实例:“你是从库,你的主库在本地(127.0.0.1)的6379端口。”
- 启动:先打开一个CMD,进入
Redis-Master目录,启动主库:redis-server.exe redis.windows.conf,再打开另一个CMD,进入Redis-Slave目录,启动从库:redis-server.exe redis.windows.conf。 - 验证:用客户端连接主库
redis-cli.exe -p 6379,执行set mykey hello,然后连接从库redis-cli.exe -p 6380,执行get mykey,如果能读到hello,说明主从同步成功!在从库上执行info replication命令可以查看复制状态。
第三部分:哨兵模式——让系统自动故障切换
主从模式有个问题,如果主库挂了,需要手动把从库升级成主库,很麻烦,哨兵(Sentinel)就是来解决这个问题的,它是个“监控员”,能自动完成故障发现和主从切换,来源:Redis官方文档Sentinel章节。
- 先搭建好一个主从环境:就是第二部分的内容,一个主(6379),一个从(6380)。
- 配置哨兵:在Redis目录下(可以放在Master或Slave目录,也可以单独放一份),找到
sentinel.conf文件,我们需要修改关键配置:port 26379(哨兵自己服务的端口,默认26379)sentinel monitor mymaster 127.0.0.1 6379 2这行是核心,意思是:监控一个名叫mymaster的主库,它在127.0.0.1:6379,最后的2表示至少需要2个哨兵同意才认为主库真的挂了(因为我们只起一个哨兵做演示,所以这个值设为1也可以,但生产环境至少3个)。sentinel down-after-milliseconds mymaster 5000表示5秒内主库没响应,就认为它“主观下线”。
- 启动哨兵:打开一个新的CMD,执行
redis-server.exe sentinel.conf --sentinel,注意,必须加上--sentinel参数,告诉程序以哨兵模式运行。 - 模拟故障验证:
- 先用客户端连接哨兵
redis-cli.exe -p 26379,执行sentinel master mymaster查看主库信息,确认是6379。 - 手动关闭主库(6379) 的进程。
- 等待几秒钟后,再次在哨兵客户端执行
sentinel master mymaster,你会发现,主库的IP和端口已经变成了原来从库的(127.0.0.1:6380)!检查原来的从库(6380)的信息,它的角色(role)已经变成了master,这就完成了自动切换。
- 先用客户端连接哨兵
第四部分:分片集群模式——应对海量数据
当数据量非常大,一台机器内存不够时,就需要分片集群(Cluster),它把数据分到多个主节点上存储,同时每个主节点还可以有从节点做备份,来源:Redis官方文档Cluster教程。 在Windows上搭建原生集群非常复杂,需要Ruby环境,而且微软移植版对集群的支持可能不完善,这里介绍一个更简单的模拟方法,用于学习和测试:使用多个实例,但不用它们自动发现和分配槽位,我们手动控制分片逻辑,这虽然不是真正的Cluster,但能让你理解分片的核心思想。
- 启动多个Redis实例:我们启动三个实例,端口分别为7001, 7002, 7003,复制三份Redis文件夹,分别修改各自的
redis.windows.conf文件中的port为对应端口。 - 客户端实现分片:核心在于,应用程序(客户端)决定一条数据该存到哪个实例,我们用一个最简单的分片规则:对key进行CRC32哈希计算,然后对实例数量取模。
分片结果 = CRC32(key) % 3。- 结果=0,存到7001实例。
- 结果=1,存到7002实例。
- 结果=2,存到7003实例。
- 演示:在程序中,当你要存储
user:1001这个key时,计算CRC32("user:1001") % 3,假设结果是1,那么程序就主动连接7002端口这个实例进行存储,读取的时候,同样计算一遍,再去对应的实例读。 - 说明:这种方法的好处是简单直观,避免了在Windows上配置真正集群的麻烦,缺点是扩容(增加实例)非常麻烦,需要重新计算所有数据的哈希并迁移,真正的Redis Cluster引入了“哈希槽”的概念来自动管理这些。
总结一下
在Windows上,单机、主从、哨兵都可以很好地搭建和测试,能让你充分理解Redis的高可用机制,而真正的分片集群,由于环境限制,建议直接在Linux服务器上实践,或者用Docker来模拟,这个教程给了你一个在Windows环境下入门所有核心概念的实用路径,动手做一遍,印象会非常深刻。

本文由酒紫萱于2026-01-01发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/72234.html
