大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员。

今天给大家分享一下,redis缓存集群简单介绍。

1.背景介绍

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。

Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施。把多个redis实例整合在一起,形成一个集群,也就是将数据分散到集群的多台机器上。当数据量过大一个主机放不下的时候,就需要对数据进行分区,将key按照一定的规则进行计算,并将key对应的value分配到指定的Redis实例上,这样的模式简称Redis集群。

2.知识剖析

redis三种缓存策略-主从复制

在主从复制中,数据库分为俩类,主数据库(master)和从数据库(slave)。主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库。从数据库一般都是只读的,并且结束主数据库同步过来的数据。一个master可以拥有多个slave,但是一个slave只能对应一个master。

当slave启动后,主动向master发送SYNC命令。master接收到SYNC命令后在后台保存快照(RDB持久化)和缓存保存快照这段时间的命令,然后将保存的快照文件和缓存的命令发送给slave。slave接收到快照文件和命令后加载快照文件和缓存的执行命令。复制初始化后,master每次接收到的写命令都会同步发送给slave,保证主从数据一致性。

redis三种缓存策略-哨兵

哨兵的作用是监控 redis系统的运行状况,功能有:监控主从数据库是否正常运行 、master出现故障时,自动将slave转化为master、多哨兵配置的时候,哨兵之间也会自动监控以及多个哨兵可以监控同一个redis

由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

redis三种缓存策略-集群

Redis 集群的分片特征在于将键空间分拆了16384个槽位,每一个节点负责其中一些槽位。Redis提供一定程度的可用性,可以在某个节点宕机或者不可达的情况下继续处理命令。Redis 集群中不存在中心(central)节点或者代理(proxy)节点

总结下来,就是redis支持的cluster特性有:节点自动发现,在线分片,集群容错,基于配置的集群管理

3.常见问题

1)redis集群的具体搭建

4.编码实战

5.扩展思考

redis集群分片机制。

Redis 集群没有使用一致性hash, 而是引入了哈希槽的概念。一个 Redis 集群包含 16384 个哈希槽(hash slot), 数据库中的每个键都属于这 16384 个哈希槽的其中一个, 集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽, 其中CRC16(key) 语句用于计算键 key 的 CRC16 校验和。每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽。这种结构很容易添加或者删除节点,并且无论是添加删除或者修改某一个节点,都不会造成集群不可用的状态。

什么时候整个集群不可用

1)如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败。
2)如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.

6.参考文献

https://blog.csdn.net/q649381130/article/details/79931791

https://blog.csdn.net/yinbucheng/article/details/72808900

http://www.cnblogs.com/gossip/p/5990305.html

7.更多讨论

1)redis和mongoDB的区别

Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单.适合较小数据量的性能和运算。

MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活,海量数据的访问效率提升。

2)redis支持事务么?

支持事务,命令要不全部执行,要不不执行,但是,仅能能保证事务中的操作按顺序执行。

3)redis集群有核心节点吗?

Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

【修真院JAVA小课堂】redis缓存集群简单介绍相关推荐

  1. 【修真院java小课堂】ArrayList浅析

    大家好,我是IT修真院郑州分院第8期学员,一枚正直善良的java程序员.今天给大家分享一下,修真院官网 java任务中可能会使用到的知识点: ArrayList浅析 width="640&q ...

  2. 【修真院Java小课堂】Annotation注解

    标题: [修真院Java小课堂]Annotation注解 开场语: 大家好,我是IT修真院西安分院第三期学员,一枚正直纯洁善良的JAVA程序员,今天给大家分享一下,修真院官网JAVA任务七,深度思考中 ...

  3. 【修真院java小课堂】clean,install,package,deploy分别代表什么含义?

    大家好,我是IT修真院成都分院第12期学员,一枚正直善良的java程序员. 今天给大家分享一下,修真院官网java任务一中可能会使用到的知识点: clean,install,package,deplo ...

  4. 【修真院JAVA小课堂】什么是压测,为什么要进行压力测试?JMETER工具的使用

    大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员. 今天给大家分享一下,什么是压测,为什么要进行压力测试?JMETER工具的使用. 1.背景介绍 压测,即压力测试 ...

  5. 【修真院Java小课堂】Tiles框架简单介绍

    大家好,我是IT修真院上海分院第6期的学员,一枚正直纯洁善良的程序员 今天给大家分享一下,Tiles框架简单介绍 Tiles框架简单介绍 背景介绍 什么是Tiles Tiles 是一种JSP布局框架, ...

  6. 【修真院WEB小课堂】定时器有哪些用法?

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [定时器有哪些用 ...

  7. 【修真院pm小课堂】详谈用户体验五要素

    [修真院pm小课堂]详谈用户体验五要素 用户体验五要素在产品的工作中经常听到,那么他究竟是什么呢?怎样去使用呢? 一.战略层 明确商业目标和用户目标,解决两者之间的冲突,找到平衡点,确定产品原则和定位 ...

  8. REDIS缓存集群介绍

    本次介绍redis缓存集群,目前是为了解决session共享的问题(这里只说如何配置集群),当然它可以解决更麻烦的问题,只是目前还用不到.redis缓存集群是比较实用的技能,布置方式要根据自己的实际需 ...

  9. Redis学习笔记(11)——Redis缓存集群方案

    为什么80%的码农都做不了架构师?>>>    由于单台Redis服务器的内存管理能力有限,使用过大内存的Redis又会使得服务器的性能急剧下降,一旦服务器发生故障将会影响更大范围业 ...

最新文章

  1. R语言将dataframe数据从宽表变为长表实战(melt函数、pivot_longer函数、gather函数)
  2. mysql的repeat()函数
  3. springboot中使用mybatis
  4. 数据结构思维 第六章 树的遍历
  5. c语言考试长沙理工大学,2013年长沙理工大学C语言考试试卷A.doc
  6. Exception Error log
  7. sybase 连接mysql_如何连接到Sybase SQL Anywhere数据库
  8. 美国教授北大演讲:并不是每个人都适合做学术
  9. 【OpenCV】图像线性混合
  10. spring中的class配置不能使用properties中的字符串
  11. 《尚学堂科技_马士兵_JAVA_系列视频教程_BBS_2007》学习
  12. 复合辛普森公式matlab,复合梯形公式、复合辛普森公式 matlab
  13. 我与计算机1000字大学,计算机系大学生助学金申请书(1000字)
  14. android 自定义剪裁,Android自定义View实现照片裁剪框与照片裁剪功能
  15. kettle使用命令行来运行ktr和kjb
  16. Ubuntu 18.04 登录界面鼠标键盘鼠标失灵解决方法
  17. 如何让大脑更强大?打造最强大脑的5个关键要素
  18. python一行输入两个数据中间用空格隔开
  19. java 登录失效时间_详谈Java设置session超时(失效)的时间
  20. A Brief History of Just-In-Time 简读

热门文章

  1. 【Docker】No defult Boot2Docer ISO异常
  2. qlikview从mysql中抽取数据的过程,mysql数据同步到sqlserver的过程
  3. 阿里云盾技术强在哪里?轻松防御DDoS、CC攻击 1
  4. html页面内检索,如何用 javascript 实现html页面的关键字搜索?
  5. 显卡上DirectX 9.0 是什么意思
  6. 外贸Newer必备外贸流程
  7. 11. JS编程之查找元素在数组中的位置
  8. [转]FlightCaster如何预测飞机准点的
  9. 使用Springboot+MAVEN完成SSM项目的搭建(idea)--小白面试机试题
  10. 有关键词和频率,怎么求共词矩阵?有报酬