课堂课题:
什么叫集群?缓存应该在什么情况下使用集群?有哪些实现集群的方案?
关联任务:
任务五
直播时间:
2018-10-24 19:30:00
课堂内容:
视频链接:
PPT链接:
提交按钮:
小课堂内容格式
标题:
【修真院xx(职业)小课堂】课题名称
开场语:
大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX
(1)背景介绍:
背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。
(2)知识剖析:
讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。
(3)常见问题:
最少列出1个常见问题。
(4)解决方案:
写清楚常见问题的解决方案。
(5)编码实战:
尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。
(6)拓展思考:
知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。
(7)参考文献:
引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。
(8)更多讨论:
Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答
(9)鸣谢:
感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。
(10)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
【修真院java小课堂】redis缓存集群简单介绍
大家好,我是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-张帆 发表于 2018-11-02 09:48:42 #1
关于缓存的雪崩需要看一下,不要只觉得它的好处,坏处也需要熟悉.
回复