Redis 集群规范

摘要:参考官方文档Redis Cluster spec总结的Redis规范

正文:

Redis 集群规范

安全写入

两个写入丢失的可能

  • 写入操作到达主节点,主节点异步冗余备份还没传播到从节点时候主节点挂了,该写入会丢失 几率很小,虽然是异步备份,但主节点写入并回复客户端的时间和传播给slave节点时间大致相同
  • 故障转移时候,一个没有更新路由表的客户端会在主–>从之前做写入操作(几率更小) 原因:长时间无法被大多数主节点访问的节点会被故障转移掉,不再接受任何写入操作,其修复好后仍然会有一小段时间拒绝写入。好让其他节点有时间去告知配置信息的变更

可用性

根据redis选举机制,高可用需要至少3台服务器(3个master节点),每个master节点都至少要有一个salve节点可达,最好是从节点数量>主节点数量

  1. master遇到故障转移到slave后,集群会再次恢复可用
  2. master故障修复后会重新加入集群成为新master的从节点,防止下次故障
  3. 当从节点有两个就可以多一次故障转移

性能

在Redis的集群中,节点并不是把命令转发到负责键的节点上,而是把客户端重定向到服务一定范围内的键的节点上。 最终客户端获得一份最新的集群路由表,里面有写着哪些节点服务哪些键,所以在正常操作中客户端是直接联系到对应的节点来发送指令。

由于使用了异步复制,节点不会等待其他节点对写入操作的回复

所以普通操作是可以被处理得跟在Redis单机版一样的,在一个拥有 N 个master节点的 Redis 集群中,由于线性扩展的设计,你可以认为同样的操作在集群上的性能是Redis单机版的n倍

键分布模型

Redis 集群的键空间被分割为 16384 个槽(slot), 集群的最大节点数量也是 16384 个。

推荐的最大节点数量为 1000 个左右。

每个主节点都负责处理 16384 个哈希槽的其中一部分。

参考链接

Redis Cluster Spec

Redis 集群规范

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏佳爷的后花媛

github上搭建个人博客(有更新)

第三步:这个项目就是专门的放页面的,所以master分支即可. 如果是你的某个仓库的页面,你需要设置到 gh-pages 分支中.进入(设置页面)sett...

3392
来自专栏Aloys的开发之路

热切换Log4j级别配置

做一个产品或者项目,在测试时一般要打印详细的log,发布以后,因为打印日志会损失性能,所以通常在生产机上将log4j级别设置为最高,以提高效率,一旦客户那里出了...

2085
来自专栏Java技术栈

如何让Git记住用户名和密码

每次提交代码都要输入用户名密码,十分麻烦,教大家怎么让Git记住密码。 Https记住密码 永久记住密码 git config --global credent...

4265
来自专栏运维小白

2.9 rm命令

rmdir有一定的局限性,只能删除目录,不能删除文件 rm = remove rm命令可以删除文件,还可以删除非空的目录 (单独使用rm命令会提示是否进行删...

1878
来自专栏菜鸟致敬

MySQL 创建数据库

使用 mysqladmin 创建数据库 使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库。所以我们这边使用root用户登录,root用户拥...

4098
来自专栏维C果糖

通过 Git 将代码提交到 GitHub(下)

在「通过 Git 将代码提交到 GitHub(上」一文中,我们已经介绍了向 GitHub 提交代码时的第一种情况,即: 第一种:本地没有 Git 仓库,这时我们...

2397
来自专栏北京马哥教育

Linux删除目录下的文件的10种方法

下午闲着没事儿,看到了一遍文章,便突发奇想的想起删除目录下的所有文件的方法;整理了几个,如有不足,还望读者不吝赐教! 删除当前目录下的文件 1.rm -f * ...

2908
来自专栏CaiRui

Python os模块常用命令

1、os.name---判断现在正在实用的平台,Windows返回'nt';linux返回'posix' 2、os.getcwd()---得到当前工作的目录。 ...

1977
来自专栏刺客博客

CentOS下网卡配置方法以及多IP配置

我们为什么要手动配置IP呢? 因为在某些服务器上,我们安装了BBR后,网卡会自动改变IP为内网IP,导致我们的程序无法联网,所以需要手动配置一下IP。 Ce...

3261
来自专栏酷玩时刻

JDK开发环境搭建及环境变量配置

根据系统版本下载tar.gz文件,服务器一般是64位的 jdk-8u121-linux-x64.tar.gz 、jdk-8u121-linux-i586.ta...

973

扫码关注云+社区

领取腾讯云代金券