Redis集群学习笔记

前言

最近有个需求,就是将一个Redis集群中数据转移到某个单机Redis上。

迁移Redis数据的话,如果是单机Redis,有两种方式:
a. 执行redis-cli shutdown命令,触发写RDBAOF写磁盘操作,然后将RDB文件和AOF文件都拷贝到新服务器上,然后运行服务器即可。
b. 如果不想暂停服务,可以用工具,比如Redis Dump;也可以采用Redis提供的Master Slave方式同步数据。

但是,如果是Redis集群的话,每个Redis实例上面只有部份数据,这就不太好办了。因此,有必要学习Redis集群的相关知识。

基础知识 - 分片

为什么Redis需要分片?Redis分片可以

  1. 分片后,数据库容量不受单机内存容量限制
  2. 分片能利用多核、多服务器,提高计算能力(一个Redis服务是单线程的)
  3. 分片后,单机网络带宽压力减少。

为什么选择哈希分片(hash partitioning)?

最简单的分片方式是范围分片,不过范围分片要维护一个映射范围到实例的表,这种方式效率低。

 例如:如果我们的数据是user的形式,我们可以把user<0>到user<1000>的数据存到1号Redis实例,把user<10001>到user<20000>存到2号Redis实例,依此类推。但如果我们还有post, , 等各种不同类型的键,我们需要为每一种类型定义一个映射范围表。这个比较麻烦。

采用哈希分片就没有这个问题。由于Redis自身是一个Key-Value数据库,可以直接对key这个字符串计算hash,得到一个数字,然后对数字取模(模为redis实例数目)。

例如:我们对user<2019>这个键计算哈希得到数字9527520,假设我们有7个Redis实例,9527520 % 7 = 2,我们就能知道这个数据存放在2号Redis实例中。

分片的不同实现

  • 客户端分片(Client side partitioning)意味着,客户端直接选择正确的节点来写入和读取指定键。许多 Redis 客户端实现了客户端分片。
  • 代理协助分片(Proxy assisted partitioning)意味着,我们的客户端发送请求到一个可以理解 Redis 协议的代理上,而不是直接发送请求到 Redis 实例上。代理会根据配置好的分片模式,来保证转发我们的请求到正确的 Redis 实例,并返回响应给客户端。Redis 和 Memcached 的代理 Twemproxy 实现了代理协助的分片。
  • 查询路由(Query routing)意味着,你可以发送你的查询到一个随机实例,这个实例会保证转发你的查询到正确的节点。Redis 集群在客户端的帮助下,实现了查询路由的一种混合形式 (请求不是直接从 Redis 实例转发到另一个,而是客户端收到重定向到正确的节点)。下面所说的Redis Cluster就是采用查询路由的方式。

Redis官方提供的集群实现:Redis Cluster

从 Redis 3.0 开始,Redis提供了一个官方集群实现:Redis Cluster。

上面这两个文档足够了,下面是我的一些理解。

新增或删除结点

RedisCluster通过哈希槽移动、哈希槽百分比调整、重新分片(Reshard)等操作完成增删结点、数据均衡。
这篇博客挺好的,自己动手试试试试能加深理解,CSDN - Redis Cluster增加节点和Reshard

Redis Cluset的主从模型Master-Slave

比如我们有6个Redis实例,可以用分别设置A,B,C三台作为Redis Cluster的主服务器,然后设置A1,A2,A3作为从服务器。这样,当主服务器A宕机后,Redis Cluster会自动将请求重定向到A1服务器。

一定要看的链接

Redis集群学习笔记的更多相关文章

  1. 25.redis集群搭建笔记

    ###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码   1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,k ...

  2. redis集群学习

    转载: http://arganzheng.life/redis-cluster.html Redis3.0版本加入了cluster功能,解决了Redis单点无法横向扩展的问题. 分布式系统要解决的不 ...

  3. codis+redis集群学习整理(待续)

    Codis 由四部分组成: Codis Proxy (codis-proxy) Codis Manager (codis-config) Codis Redis (codis-server) ZooK ...

  4. Redis集群搭建笔记

    系统为CentOS7,创建9001-9006 6个文件夹,复制 redis-server redis.conf 文件到6个新文件夹下 redis.conf文件配置如下: port 9001 daemo ...

  5. 【Database】Mysql分布式集群学习笔记

    一.sql 的基本操作 (2018年11月29日,笔记) (1)数据库相关操作 创建数据库.查看数据库.删除数据库 #. 创建数据库 create database mytest default ch ...

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

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

  7. Linux 下redis 集群搭建练习

    Redis集群 学习参考:https://blog.csdn.net/jeffleo/article/details/54848428https://my.oschina.net/iyinghui/b ...

  8. Windows下Redis集群配置

    Redis集群学习地址:http://blog.csdn.net/dc_726/article/details/11694437 Windows-32系统下搭建Redis集群 一.Redis主从同步原 ...

  9. Redis集群环境搭建实践

    0 Redis集群简介 Redis集群(Redis Cluster)是Redis提供的分布式数据库方案,通过分片(sharding)来进行数据共享,并提供复制和故障转移功能.相比于主从复制.哨兵模式, ...

随机推荐

  1. ASCII对照表

    ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 . 1 SOH 33 ! 65 A 97 a 2 ST ...

  2. [py]flask动态展示主机内存图

    echarts基础 需要借助这个图来绘制,动态内存图. 绘制步骤 写py脚本来入库日志 选取合适的echart,并观察图所需的数据格式 用flask返回这个静态的echarts 用flask写接口返回 ...

  3. Andrew Ng-ML-第十二章-机器学习系统设计

    1.确定执行的优先级 图1.邮件垃圾分类举例 选择100个单词作为指示是否是垃圾邮件的指标,将这些单词作为特征向量,只用0/1表示,出现多次也只用1表示,特征变量用来表示邮件. 通常情况下,会选择训练 ...

  4. 利用lodop打印控件轻松实现批量打印 (转载http://www.thinkphp.cn/topic/13085.html)

    最近在做一个打印程序,要实现批量打印功能,在网上找了很多天,也在tp官网咨询大牛们,对大家的的提议我一一进行了研究,总结如下: 要实现批量打印可以有两个办法: 一是利用专业的报表程序,能实现十分复杂的 ...

  5. HashMap(JDK1.9)详解

    一.HashMap的概念. 1.HashMap类的继承实现关系如下:因此HashMap的功能有:可序列化.可克隆等功能. 2.HashMap的数据结构:数组+链表+红黑树. 3.键值对的存储方案:第一 ...

  6. 174. Dungeon Game(动态规划)

    The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. ...

  7. c#: using Microsoft.Office.Interop.Excel 异常

    解决方法: Project>Reference>右键Add Reference...>Choose Microsoft Excel 15.0 Object Library

  8. python import win32clipboard 报错DLL load failed: %1 不是有效的 Win32 应用程序。

    在python中引入win32clipboard时报错,DLL load failed: %1 不是有效的 Win32 应用程序 >>> import win32clipboardT ...

  9. 升级到php7相关问题,日请求过亿QQ会员活动平台PHP7升级实践

    升级到php7相关问题,日请求过亿QQ会员活动平台PHP7升级实践 日请求过亿:QQ会员活动平台PHP7升级实践http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4 ...

  10. CPU负载过高异常排查实践与总结

    昨天下午突然收到运维邮件报警,显示数据平台服务器cpu利用率达到了98.94%,而且最近一段时间一直持续在70%以上,看起来像是硬件资源到瓶颈需要扩容了,但仔细思考就会发现咱们的业务系统并不是一个高并 ...