redis部署模式-集群模式入门

        从redis3.0开始,redis支持分布式集群处理技术。Redis集群首先指的是多服务器的物理部署,同时也指配套的redis数据库软件支持功能(如集群操作、配置命令)。

        为什么使用集群呢?这是因为在大数据(TB级别)访问情况下,如果发生单点故障,业务系统可以做平滑故障处理;另外可以分布式数据存放,提供读写分离功能支持,进一步提供客户端的响应性能。

集群部署

        Redis官方网站建议redis集群的最小数量为6个节点,即3个主节点、3个从节点。从节点用于复制主节点数据,在主节点出现故障时,从节点可以快速切换为主节点。

       首先需要安装部署6个redis节点,这时候每个节点都是相互独立的,我们必须将各个独立的节点连接起来,构成一个集群。

    集群部署可以使用集群设置命令配置,也可以使用集群安装工具--redis-trib安装。Redis 3.0以后,官方提供了 redis-trib.rb 这个工具,就在redis包解压目录的 src 目录中,使用下面这个命令即可完成安装。如

redis-trib.rb create –replicas 110.255.209.32:8381,10.255.209.36:8381,10.255.209.37:8381,10.255.209.32:8382,10.255.209.36:8382,10.255.209.37:8382

  –replicas 1为每个Master指定了1个Slave,Master和Slave的角色和每个master插槽的数量由工具本身分配算法决定。一个原则是尽量保证master和slave节点不在同一台主机上。如


        当多台服务器组成redis集群后,需要有序地把redis数据存储到指定的服务器内存上。这就是哈希槽的概念,Redis Cluster中有一个16384长度的槽的概念,他们的编号为0、1、2、3……16382、16383。这个槽是一个虚拟的槽,并不是真正存在的。正常工作的时候,Redis Cluster中的每个Master节点都会负责一部分的槽,数据库中的每个键都属于这 16384 个哈希槽的其中一个,集群使用哈希算法: CRC16(key) % 16384 来计算键 key 属于哪个槽。当有某个key被映射到某个master负责的槽,那么这个master负责为这个key提供服务,至于哪个master节点负责哪个槽,这是可以由用户指定的,也可以在初始化的时候自动生成(由redis-trib.rb脚本决定)。

      集群部署完毕,可以是由cluster nodes命令查看集群节点详细信息,如

[root@localhost src]# ./redis-cli -c -h10.255.209.32 -p 8381                     //连接任一主节点

redis 10.255.209.32:8381> cluster nodes

1f80c51b0b55b6d76104d44bb2faa44c6d36134510.255.209.32:8382 slave c6b6ffab25f50079746e1c351fb885db472f73b6 01562224380818 2 connected

c6b6ffab25f50079746e1c351fb885db472f73b610.255.209.36:8381 master - 0 1562224379816 2 connected 5461-10922

7e7af153f89827d5e8b6c3d508b0cc5d2aa4a10810.255.209.37:8381 master - 0 1562224379816 3 connected 10923-16383

523e24cc862bebf9452747a5343aa86b13b19bcb10.255.209.36:8382 slave 7e7af153f89827d5e8b6c3d508b0cc5d2aa4a108 01562224378816 5 connected

da89c8e77bd0eb35b11f9cbb932ae60698a11dfe10.255.209.32:8381 myself,master - 0 0 1 connected 0-5460

0717901e63dfa076b2b9472a08a48f2ac960a55410.255.209.37:8382 slave da89c8e77bd0eb35b11f9cbb932ae60698a11dfe 01562224377813 6 connected

redis 10.255.209.32:8381>

     从左至右分别是:节点ID、IP地址和端口,节点角色标志、[连接的主节点ID号]、最后发送ping时间、最后接收到pong时间、连接状态、节点负责处理的hash slot。

集群的使用

      客户端与redis节点直连,不需要中间proxy层,客户端不需要连接集群中所有节点,连接集群中任何一个可用节点即可。

       redis集群不支持哪些需要同时处理多个键的redis命令(如mset),也不支持执行的命令需要在多个Redis节点之间移动数据,比如Set类型的并集、交集等。因为执行这些命令可能需要在多个redis节点之间移动数据,并且在高负载的情况下,这些命令将降低redis集群的性能,并导致不可预测的行为。如

redis 10.255.209.37:8381> keys hn*

1) "hn_suspect:rule_custid_order:22226330"

2)"hn_suspect:rule_tel_order:18811348255"

3)"hn_suspect:rule_tel_order:18811348250"

redis 10.255.209.37:8381>

redis 10.255.209.37:8381> mget hn_suspect:rule_tel_order:18811348255 hn_suspect:rule_tel_order:18811348250

(error) CROSSSLOT Keys in request don't hash to thesame slot

redis 10.255.209.37:8381>

    可见在同一个node也不支持multi-key类型的命令。

      接受到命令的节点并非插入键所对应槽所在的节点,那么节点将向客户端返回一个转向错误,告知客户端应该到哪个节点上去执行命令,客户端根据错误提示信息重新执行命令。如

[root@localhost src]# ./redis-cli -c -h10.255.209.36 -p 8381

redis 10.255.209.36:8381>

redis 10.255.209.36:8381> set hn_suspect:rule_tel_order:18811348250 1

-> Redirected to slot [15414] located at10.255.209.37:8381

OK

redis 10.255.209.36:8381>

       redis集群在默认情况下,slaves服务器不为客户端提供读服务,可以通过设置readonly命令,允许客户端直接读取slaves服务器的读服务

redis 10.255.209.36:8382> gethn_suspect:rule_tel_order:18811348250

-> Redirected to slot [15414] located at10.255.209.37:8381

"1"

redis 10.255.209.36:8382> readonly

OK

redis 10.255.209.36:8382> gethn_suspect:rule_tel_order:18811348250

"1"

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容