概述

Redis Cluster provides a way to run a Redis installation where data is automatically sharded across multiple Redis nodes

Redis集群提供一个在多个Redis节点数据自动共享的方式,简单来说就是添加服务器的数量,达到

  • 高可用,让Redis服务长时间有效运行,不会因为硬件/软件问题导致不可用
  • 可扩展性,动态添加节点/删除节点,达到增加性能/减少服务器资源
  • 分布式,节点可以不是
  • 容错,若其中一台服务器故障挂了Redis也能继续使用(前提是有从节点并且可用)

Redis集群数据分片

Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念.

Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么:

  • 节点 A 包含 0 到 5500号哈希槽.
  • 节点 B 包含5501 到 11000 号哈希槽.
  • 节点 C 包含11001 到 16384号哈希槽

这种结构的好处就是非常容易增加/删除节点,并且不会影响集群的使用

  • 增加节点,将原来节点的分配部分哈希槽给新节点
  • 删除节点,将删除的节点哈希槽分配给现有的节点上即可

Redis集群节点通讯

因为Redis集群是把数据分布存放在不同客户端,这样做的好处就是减少每台机器的压力,提高并发处理能力,因为我们只要进入任一节点,即可使用整个集群,这就需要节点之间互相通讯,这个是Redis内部处理。

Every Redis Cluster node requires two TCP connections open. The normal Redis TCP port used to serve clients, for example 6379, plus the port obtained by adding 10000 to the data port, so 16379 in the example

每一个Redis集群节点都是需要两个端口,一个用于客户端连接,一个用于节点数据传输(Ping-Pong机制),数据端口是在客户端口的基础上加10000,例如,端口6379,数据端口16379,所以在多台机器部署集群需要注意防火墙是否把数据屏蔽 。

环境准备

1.安装Redis  下载地址

2. 安装Ruby,因为Redis集群管理是用ruby开发  下载地址

3. 下载edis-trib.rb文件,放在Redis安装文件夹内   下载地址

4. 安装Ruby的Redis驱动,直接在cmd执行(安装的时候把Ruby放在环境变量,否则进到Bin执行)

gem install redis

出现Successfully installed 代表安装成功

搭建Redis集群

Redis集群至少需要3个节点,就按最少的3个节点搭建一个集群

1. 准备3个配置文件,修改各自的端口和appendfilename,当然如果在3台机器上运行,什么都不需要修改

port
cluster-enabled yes
cluster-config-file nodes..conf
cluster-node-timeout
appendonly yes
appendfilename "appendonly.6379.aof"

2. 准备bat文件启动3个redis节点(非必须,可以手动cmd启动,配置相应配置文件),bat文件需要在redis安装目录执行

title redis-cluster
start redis-server.exe redis..conf
start redis-server.exe redis..conf
start redis-server.exe redis..conf

3. 用redis-trib创建集群,在cmd执行

redis-trib.rb create 127.0.0.1: 127.0.0.1: 127.0.0.1:

执行完成,输入yes更新配置文件,最终输出各个节点信息,哈希槽分配情况。

至此,Redis集群已经搭建好,这里只有3个主节点,若想从节点,只需多加3个Redis节点,命令加上--replicas参数就可以。

测试Redis集群

进入redis-cli集群模式

redis-cli -c

可以看出,写入读取,Redis根据Key计算的hash值在各个节点自动重定向

打开刚刚开启的几个Redis实例,可以看出他们之前一直在不断通讯

转发请标明出处:https://www.cnblogs.com/WilsonPan/p/12643221.html

【Redis】集群教程(Windows)的更多相关文章

  1. [个人翻译]Redis 集群教程(中)

    上一篇:http://www.cnblogs.com/li-peng/p/6143709.html 官方原文地址:https://redis.io/topics/cluster-tutorial  水 ...

  2. [个人翻译]Redis 集群教程(下)

    [个人翻译]Redis 集群教程(上) [个人翻译]Redis 集群教程(中) 官方原文地址:https://redis.io/topics/cluster-tutorial 水平有限,如果您在阅读过 ...

  3. Redis集群部署-windows

    Redis集群部署-windows 前言 为了能体验一下部署Redis集群是一种怎么样的体验,所一边做一边写了这篇记录. 1.准备 从这里下载windows服务端 https://github.com ...

  4. [个人翻译]Redis 集群教程(上)

    官方原文地址:https://redis.io/topics/cluster-tutorial  水平有限,如果您在阅读过程中发现有翻译的不合理的地方,请留言,我会尽快修改,谢谢.        这是 ...

  5. Redis集群教程(Redis cluster tutorial)

    本博文翻译自Redis官网:http://redis.io/topics/cluster-tutorial        本文档以温和的方式介绍Redis集群,不使用复杂的方式来理解分布式系统的概念. ...

  6. redis集群步骤(windows环境)

    注:原文转自 https://blog.csdn.net/zsg88/article/details/73715947 ,仅用作为方便查阅 一 所需软件:Redis.Ruby语言运行环境.Redis的 ...

  7. Windows下 搭建redis集群

    Windows下搭建redis集群教程 一,redis集群介绍 Redis cluster(redis集群)是在版本3.0后才支持的架构,和其他集群一样,都是为了解决单台服务器不够用的情况,也防止了主 ...

  8. centos redis集群搭建

    说明: 10.0.0.111部署6500,6501,6502三个主节点 10.0.0.222部署6500,6501,6502三个备份节点 1.安装redis:略 2.配置内核参数 # 配置 vm.ov ...

  9. redis集群PHP解决方案

    Redis3.2.4 Cluster集群搭建 服务器环境:192.168.3.229192.168.3.193每台服务器搭建3个节点,组成3个主节点,3个从节点的redis集群. 注意:防火墙一定要开 ...

  10. Redis创建高可用集群教程【Windows环境】

    模仿的过程中,加入自己的思考和理解,也会有进步和收获. 在这个互联网时代,在高并发和高流量可能随时爆发的情况下,单机版的系统或者单机版的应用已经无法生存,越来越多的应用开始支持集群,支持分布式部署了. ...

随机推荐

  1. 带着问题,再读ijkplayer源码

    问题 主流程上的区别 缓冲区的设计 内存管理的逻辑 音视频播放方式 音视频同步 seek的问题:缓冲区flush.播放时间显示.k帧间距大时定位不准问题- stop时怎么释放资源,是否切换到副线程? ...

  2. js中排序方法

    有些代码一两个月都会忘了,有空多做下总结,记录下来,等需要用到的时候可以来翻翻总结的博客.写技术博客,对自己是一种总结,对别人,是一种参考. 1.sort()方法 var ar1=[2,4,6,8,1 ...

  3. 为什么你学习了scrum之后还不会实施敏捷? (敏捷学习之旅一)

    标题党, 其实这个主题改为"如何能快速的学习与实施敏捷"更贴切. 我在一家大型的外资金融企业,公司最近在大面积的实施敏捷转型,我的团队首先被选为试点团队,并实施得很好,最近我也和不 ...

  4. spring多数据源分布式事务的分析与解决方案

    一.概述 1.业务背景 对老系统进行重构合并,导致新系统需要同时对3个数据库进行管理.由于出现跨库业务,需要实现分布式事务. 2.开发环境 spring框架版本  4.3.10.RELEASE 持久层 ...

  5. Vue.js组件嵌套和template外用

    Vue.extend组件的嵌套和template外用 组件嵌套分为全局组件嵌套和局部组件嵌套 组件嵌套需要将子元素写在父元素内 子组件必须在父组件中注册之后才能在父组件的模板中使用 全局组件嵌套 Vu ...

  6. JDBC 查询 模板

    JDBC 查询 与增删改不同的是SQL语句的不同,还有查询反回的是结果集  需要定义 利用 next()方法逐层查询数据 使用getXXX方法获取数据 代码相关参数根据个人设置进行修改!!!! pac ...

  7. Android NDK JNI 入门笔记-day04-NDK实现Hash算法

    * Android NDK JNI 入门笔记目录 * 开头 前面的学习,我们已经掌握了 NDK 开发的必备知识. 下一步就要多实践,通过创造问题并解决问题,来增加熟练度,提升经验. 日常开发中,经常会 ...

  8. Natas12 Writeup(文件上传漏洞)

    Natas12: 文件上传页面,源码如下: function genRandomString() { $length = 10; $characters = "0123456789abcde ...

  9. AI学习笔记:人工智能与机器学习概述

    一.人工智能基本概念 1.1 基本概念 数据分析:对历史规律的展现.对未来数据的预测. 机器学习:机器学习是指从一系列的原始数据中找到规律,提取人们可以识别的特征,然后通过学习这些特征,最终产生一个模 ...

  10. thinkphp5.0.*命令执行批量脚本

    import requests import Queue import threading import time user_agent = "Mozilla/5.0 (Windows NT ...