Redis 分布式方案Redis Cluster
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相关推荐
- redis分布式方案redis cluster的介绍和实践
简要介绍 redis cluster是redis官方提供的分布式解决方案.主要作用有两点: 将数据根据分区规则分布到不同的redis节点上,降低单个redis节点的读写压力. 内置提供高可用支持,集群 ...
- redis php方案,Redis三种部署方案图文详解
standaloan(单机模式) standaloan 是redis单机模式,及所有服务连接一台redis服务,该模式不适用生产.如果发生宕机,内存爆炸,就可能导致所有连接改redis的服务发生缓存失 ...
- Redis 分布式方案
如果要实现Redis 数据的分片,我们有三种方案.第一种是在客户端实现相关的逻辑,例如用取模或者一致性哈希对key 进行分片,查询和修改都先判断key 的路由. 第二种是把做分片处理的逻辑抽取出来,运 ...
- 第六章 商品详情进阶 + redis分布式锁 + redis问题解决 + redisson + 布隆过滤器
一.商品详情页面优化 1.1 思路 虽然咱们实现了页面需要的功能,但是考虑到该页面是被用户高频访问的,所以性能需要优化. 一般一个系统最大的性能瓶颈,就是数据库的io操作.从数据库入手也是调优性价比最 ...
- Redis分布式锁/Redis的setnx命令如何设置key的失效时间(同时操作setnx和expire)
Redis的setnx命令是当key不存在时设置key,但setnx不能同时完成expire设置失效时长,不能保证setnx和expire的原子性.我们可以使用set命令完成setnx和expire的 ...
- 【转】Redis 分布式——可用性保证之 Sentinel(实战篇)
前言 在上个篇章我们阐述了Sentinel的原理,可能大家还是云里雾里,需要来点实战性的东西,那这个篇章我们来个实战篇吧-话不多说,我们开始今天的吹牛皮- 正文 Sentinel 实战 Sentine ...
- (转)淘淘商城系列——Redis持久化方案
http://blog.csdn.net/yerenyuan_pku/article/details/72858975 Redis中设置key的过期时间 Redis中的expire命令用于设置key的 ...
- 淘淘商城——Redis持久化方案
Redis中设置key的过期时间 Redis中的expire命令用于设置key的过期时间,以毫秒计.key过期后将不再可用.Redis中的expire命令基本语法如下: expire key seco ...
- 从青铜到王者,带你完成Redis分布式锁的实现和优化
0.分布式锁的常见面试题 Redis除了拿来做缓存,你还见过基于Redis的什么用法? Redis做分布式锁的时候有需要注意的问题? 如果是Redis是单点部署的,会带来什么问题? 那你准备怎么解决单 ...
最新文章
- “钱”在这个社会是怎么一个地位
- 数据库 版本号是 661,打不开。此server支持 655 和更早的版本号。不支持降级路径...
- AAuto 快速开发win32小程序
- crt python_SecureCRT Python
- 谈谈Angular关于$watch,$apply 以及 $digest的工作原理
- c语言中listnode是什么意思,怎么理解typedef Node * List
- 信息安全工程师笔记-综合知识冲刺(三)
- 一个c++程序员一年前的生活笔记
- Linux 30年专访:Linus Torvalds谈Linux内核开发与Git
- fastble找不到手机_Android蓝牙库FastBle的基础入门使用
- 杰控组态西门子PLC
- Java删除服务器上的文件
- WEB程序设计-个人主页,项目编号600001
- 电脑课学生端密码查看
- 【AAAA级LED护眼学习台灯照明方案】PWM内部转模拟,调光深度1%,无频闪顾虑,低亮无抖动LED恒流驱动芯片FP7102/FP7103/FP7208/FP7209
- 奇怪的google博客搜索
- 大白菜超级U盘启动盘制作工具V1.7(最新版)
- Eclipse中Outline里各种图标的含义
- N-gram 语言模型
- Three——二、加强对三维空间的认识