Redis(二)分布式锁与 Redis 集群搭建
@[toc]
一、 线程锁与分布式锁
线程锁 单体项目
单体项目
步骤
代码如下
分布式锁
条件
启动两个实例 5000/5001
Nginx
jmeter
步骤
核心代码
分布式锁的使用场景当集群系统中修改某个字段值时使用分布式锁。
分布式锁的设计思路比如并发两个进程,当第一个进程加锁后,第二个进程加锁会失败,会休眠(10 毫秒),直到第一个进程执行完业务代码并释放锁,如果第一个进程处理业务代码超过 10 毫秒,redis 的过期时间也是 10 毫秒,那么第二个进程进行加锁执行业务代码并释放锁。备注:休眠的毫秒数可根据自己业务代码定义,毫秒数最好和 redis 过期时间一致。
二、Redis 集群
第一代集群 主从集群
如图:
缺点只有一个 master,当 maset 宕机后,整个 redis 集群系统无法使用。
第二代集群 哨兵集群
如图
第二代集群比第一代集群多了一个 sentinel 监视的角色,当主节点宕机后,sentinel 会从多个从节点中选择一个为主节点。
缺点
只有一个 master,无法解决高并发写的问题。
无法存储海量数据。
第三代集群
如图:
优点与缺点
优点
解决高并发写。
存储海量数据。
缺点
消耗资源比较大。
实现
条件
windows 环境
Redis
网盘下载地址链接:https://pan.baidu.com/s/1-rdemcSLHHFSy3b03EnQsg 提取码:liiz
Ruby
网盘下载地址链接:https://pan.baidu.com/s/1NEnVoZzzMyROdm0qNeqw0g 提取码:lf10
Ruby 驱动
网盘下载地址链接:https://pan.baidu.com/s/1LkpTstTMenespCx4J0ZtWA 提取码:7wn6
分配主从工具
网盘下载地址链接:https://pan.baidu.com/s/18ah0ePiGr9XCukRsRdIiXw 提取码:0e02
步骤
配置集群文件 (6 个实例) 配置 6 个配置文件【并将 6 个配置拷贝到 redis 根目录下】 ==配置不能有中文注释也不行!!!!==
redis 集群内部关系结构图如图:
在 redis 集群中,每个节点都是相互通信的,用的协议是 Gossip 协议。
redis 集群内部数据存储原理
Slot 槽 主节点有槽[平均分配] 从节点没有槽 总共有 16384 个槽
版权声明: 本文为 InfoQ 作者【神秘码农】的原创文章。
原文链接:【http://xie.infoq.cn/article/d15451002daddad95ddb85646】。未经作者许可,禁止转载。
评论