https://redis.io/topics/cluster-tutorial/

Redis Cluster 是在Redis 3.0 的版本正式推出的,用来解决分布式的需求,同时也可以实现高可用。跟Codis 不一样,它是去中心化的,客户端可以连接到任意一个可用节点。

数据分片有几个关键的问题需要解决:

1、数据怎么相对均匀地分片

2、客户端怎么访问到相应的节点和数据

3、重新分片的过程,怎么保证正常服务

架构

Redis Cluster 可以看成是由多个Redis 实例组成的数据集合。客户端不需要关注数据的子集到底存储在哪个节点,只需要关注这个集合整体。

以3 主3 从为例,节点之间两两交互,共享数据分片、节点状态等信息。

搭建

https://gper.club/articles/7e7e7f7ff7g5egc7g6d
配置
启动
进入客户端:
redis-cli -p 7291
redis-cli -p 7292
redis-cli -p 7293
批量插入数据

类型 命令
集群 cluster info :打印集群的信息
cluster nodes :列出集群当前已知的所有节点(node),以及这些节点的相关信息。
节点 cluster meet <ip> <port> :将ip 和port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id> :从集群中移除node_id 指定的节点(保证空槽道)。
cluster replicate <node_id> :将当前节点设置为node_id 指定的节点的从节点。
cluster saveconfig :将节点的配置文件保存到硬盘里面。
槽(slot) cluster addslots <slot> [slot ...] :将一个或多个槽(slot)指派(assign)给当前节点。
cluster delslots <slot> [slot ...] :移除一个或多个槽对当前节点的指派。
cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot <slot> node <node_id> :将槽slot 指派给node_id 指定的节点,如果槽已经指派给另一个
节点,那么先让另一个节点删除该槽>,然后再进行指派。
cluster setslot <slot> migrating <node_id> :将本节点的槽slot 迁移到node_id 指定的节点中。
cluster setslot <slot> importing <node_id> :从node_id 指定的节点中导入槽slot 到本节点。
cluster setslot <slot> stable :取消对槽slot 的导入(import)或者迁移(migrate)。
cluster keyslot <key> :计算键key 应该被放置在哪个槽上。
cluster countkeysinslot <slot> :返回槽slot 目前包含的键值对数量。
cluster getkeysinslot <slot> <count> :返回count 个slot 槽中的键

问题:Cluster 解决分片的问题,数据怎么分布?

数据分布

如果是希望数据分布相对均匀的话,我们首先可以考虑哈希后取模。

Redis 分布式方案Redis Cluster相关推荐

  1. redis分布式方案redis cluster的介绍和实践

    简要介绍 redis cluster是redis官方提供的分布式解决方案.主要作用有两点: 将数据根据分区规则分布到不同的redis节点上,降低单个redis节点的读写压力. 内置提供高可用支持,集群 ...

  2. redis php方案,Redis三种部署方案图文详解

    standaloan(单机模式) standaloan 是redis单机模式,及所有服务连接一台redis服务,该模式不适用生产.如果发生宕机,内存爆炸,就可能导致所有连接改redis的服务发生缓存失 ...

  3. Redis 分布式方案

    如果要实现Redis 数据的分片,我们有三种方案.第一种是在客户端实现相关的逻辑,例如用取模或者一致性哈希对key 进行分片,查询和修改都先判断key 的路由. 第二种是把做分片处理的逻辑抽取出来,运 ...

  4. 第六章 商品详情进阶 + redis分布式锁 + redis问题解决 + redisson + 布隆过滤器

    一.商品详情页面优化 1.1 思路 虽然咱们实现了页面需要的功能,但是考虑到该页面是被用户高频访问的,所以性能需要优化. 一般一个系统最大的性能瓶颈,就是数据库的io操作.从数据库入手也是调优性价比最 ...

  5. Redis分布式锁/Redis的setnx命令如何设置key的失效时间(同时操作setnx和expire)

    Redis的setnx命令是当key不存在时设置key,但setnx不能同时完成expire设置失效时长,不能保证setnx和expire的原子性.我们可以使用set命令完成setnx和expire的 ...

  6. 【转】Redis 分布式——可用性保证之 Sentinel(实战篇)

    前言 在上个篇章我们阐述了Sentinel的原理,可能大家还是云里雾里,需要来点实战性的东西,那这个篇章我们来个实战篇吧-话不多说,我们开始今天的吹牛皮- 正文 Sentinel 实战 Sentine ...

  7. (转)淘淘商城系列——Redis持久化方案

    http://blog.csdn.net/yerenyuan_pku/article/details/72858975 Redis中设置key的过期时间 Redis中的expire命令用于设置key的 ...

  8. 淘淘商城——Redis持久化方案

    Redis中设置key的过期时间 Redis中的expire命令用于设置key的过期时间,以毫秒计.key过期后将不再可用.Redis中的expire命令基本语法如下: expire key seco ...

  9. 从青铜到王者,带你完成Redis分布式锁的实现和优化

    0.分布式锁的常见面试题 Redis除了拿来做缓存,你还见过基于Redis的什么用法? Redis做分布式锁的时候有需要注意的问题? 如果是Redis是单点部署的,会带来什么问题? 那你准备怎么解决单 ...

最新文章

  1. “钱”在这个社会是怎么一个地位
  2. 数据库 版本号是 661,打不开。此server支持 655 和更早的版本号。不支持降级路径...
  3. AAuto 快速开发win32小程序
  4. crt python_SecureCRT Python
  5. 谈谈Angular关于$watch,$apply 以及 $digest的工作原理
  6. c语言中listnode是什么意思,怎么理解typedef Node * List
  7. 信息安全工程师笔记-综合知识冲刺(三)
  8. 一个c++程序员一年前的生活笔记
  9. Linux 30年专访:Linus Torvalds谈Linux内核开发与Git
  10. fastble找不到手机_Android蓝牙库FastBle的基础入门使用
  11. 杰控组态西门子PLC
  12. Java删除服务器上的文件
  13. WEB程序设计-个人主页,项目编号600001
  14. 电脑课学生端密码查看
  15. 【AAAA级LED护眼学习台灯照明方案】PWM内部转模拟,调光深度1%,无频闪顾虑,低亮无抖动LED恒流驱动芯片FP7102/FP7103/FP7208/FP7209
  16. 奇怪的google博客搜索
  17. 大白菜超级U盘启动盘制作工具V1.7(最新版)
  18. Eclipse中Outline里各种图标的含义
  19. N-gram 语言模型
  20. Three——二、加强对三维空间的认识

热门文章

  1. FineUICore(基础版)v5.4.0已发布!
  2. Android APK反编译 apktool使用教程
  3. 【BZOJ-1127】KUP 悬线法 + 贪心
  4. mysql bin log日志
  5. Socket 套接字
  6. halcon--1D measuring
  7. C语言中的EOF符号常量
  8. 大型网站典型故障案例分析
  9. 【Apache POI】Java Web根据模板导出word文件
  10. Oracle数据库三种备份方案