码迷,mamicode.com
首页 > 其他好文 > 详细

redis集群

时间:2019-12-20 20:09:19      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:否则   keyboard   ever   use   simple   UNC   style   crc   ansi   


 Redis集群
1.为什么需要集群:
?    (1)解决单点故障

?    (2)处理高并发

?    (3)处理大数据(高并发) --解决存储问题

集群方案的选择:

    (1)主从复制 (读写分离 主从同步)

?            优点:

?                    支持主从复制,主机会自动将数据同步到从机,可以进行读写分离

?            缺点:

?                    Redis不具备自动容错和恢复功能,如果想具备自动重起 ,需要安装插件



## (2)哨兵模式

自动化的系统监控和故障恢复功能

![image-20191220101826403](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20191220101826403.png)

优点缺点:

?        主从复制优点都在, 通过哨兵自动恢复

?    缺点:比较难扩容,服务占用空间比较多

## (3)Redis-Cluster集群

redis的分布式存储,也就是说每台redis节点上存储不同的内容。


优点:

?        上面有都有,解决分布式存储问题 ,容错问题

# 4 搭建redis-cluster(了解)

所需软件
技术图片

 

 

 


(1)

要让集群正常运作至少需要3个主节点,建议配置3个主节点,其余3个作为各个主节点的从节点(也是官网推荐的模式)。

同一台电脑,不同端口模拟安装并拷贝6个服务器

 

技术图片

 

 

 



(2) 修改配置

port 6379

cluster-enabled yes

cluster-config-file nodes-6379.conf

cluster-node-timeout 15000

appendonly yes

(3) 每个redis服务 写一个startup.bat启动文件

title redis-6379

redis-server.exe redis.windows.conf

(4)安装ruby环境

?    傻瓜式安装

技术图片

 

 

 



(5)安装Redis的Ruby驱动   rubygems-3.0.6

?    a)解压

?    b)D:\Program Files\Redis_cluster\rubygems-2.7.7  然后命令行执行  ruby setup.rb

(6)通过驱动安装的redis

?    a)进入6379的目录

?    b)执行gem install redis

(7) 启动 6379-6384服务

?    创建集群

?            拷贝redis-trib.rb到6379的redis节点

?             redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

Redis集群数据分配策略:

采用一种叫做哈希槽 (hash slot)的方式来分配数据,redis cluster 默认分配了 16384 个slot,当我们set一个key 时,会用CRC16算法来取模得到所属的slot,然后将这个key分到哈希槽区间的节点上,具体算法就是:CRC16(key) % 16384

注意的是:必须要3个以上的主节点,否则在创建集群时会失败,三个节点分别承担的slot 区间是:

节点A覆盖0-5460;

节点B覆盖5461-10922;

节点C覆盖10923-16383

 

技术图片

redis集群

标签:否则   keyboard   ever   use   simple   UNC   style   crc   ansi   

原文地址:https://www.cnblogs.com/19930909a/p/12074834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!