疯狂的小鸡

疯狂的小鸡

--爬坑之路

Redis集群-集群一致性问题
更多Redis入门系列文章,参见Redis入门-大纲 最终一致性和强一致性?强一致性可以理解为在任意时刻,所有节点中的数据是一样的。同一时间点,你在节点A中获取到key1的值与在节点B中获取到key1的值应该都是一样的。 弱一致性包含很多种不同的实现,目前分布式系统中广泛实现的是最终一致性。所谓最终一致性,就是不保证在任意时刻任意节点上的同一份数据都是相同的,但是随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化。也可以简单的理解为在一段时间后,节点间的数据会最终达到一致状态。 对于最终一致性最好的例子就是DNS系统,由于DNS多级缓存的实现,所以修改DNS记录后不会在全球所有...
Redis集群-集群基础知识
更多Redis入门系列文章,参见Redis入门-大纲 什么是集群集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)高可用集群( High Availability Cluster)负载均衡集群(Load Balance Cluster)科学计算集群(High Performance Computing Cluster) 高可用集群(High Availability Cluster)常见的就是2个节点做成的HA集群,有很多通俗的不科学的名称,比如”双机热备”, “双机互备”, “双机”.高可用集群解决的是保障用户的应用程序持续对外提供服务的能力。 (请注意高可用集群既不是...
Redis集群-主从模型
更多Redis入门系列文章,参见Redis入门-大纲 主从模式redis单例提供了一种数据缓存方式和丰富的数据操作api,但是将数据完全存储在单个redis中主要存在两个问题:数据备份和数据体量较大造成的性能降低。 这里redis的主从模式为这两个问题提供了一个较好的解决方案。主从模式指的是使用一个redis实例作为主机,其余的实例作为备份机。主机和从机的数据完全一致,主机支持数据的写入和读取等各项操作,而从机则只支持与主机数据的同步和读取。也就是说,客户端可以将数据写入到主机,由主机自动将数据的写入操作同步到从机。 主从模式很好的解决了数据备份问题,并且由于主从服务数据几乎是一致的,因...
Redis集群-Cluster实现原理
更多Redis入门系列文章,参见Redis入门-大纲 心跳机制Cluster中的每个节点都维护一份在自己看来当前整个集群的状态,主要包括: 当前集群状态 集群中各节点所负责的slots信息,及其migrate状态 集群中各节点的master-slave状态 集群中各节点的存活状态及不可达投票 当集群状态变化时,如新节点加入、slot迁移、节点宕机、slave提升为新Master,我们希望这些变化尽快的被发现,传播到整个集群的所有节点并达成一致。节点之间相互的心跳(PING,PONG,MEET)及其携带的数据是集群状态传播最主要的途径。 心跳时机Redis节点会记录其向每一个节...
Redis集群-Sentinal
更多Redis入门系列文章,参见Redis入门-大纲 Sentinal概述单就主从模式而言,master节点挂了以后,redis不会从slave节点重新选一个做master。使用Sentinal可以很好解决这个问题。当master节点挂了以后,sentinel会在slave中选择一个做为master,并修改它们的配置文件,其他slave的配置文件也会被修改,比如slaveof属性会指向新的master。 每个sentinel节点其实就是一个redis实例,与主从节点不同的是sentinel节点作用是用于监控redis数据节。由于sentinel也有挂掉的可能,所以一般sentinel也会...
Redis集群-Cluster功能简述
更多Redis入门系列文章,参见Redis入门-大纲 Cluster是什么博文至此,redis集群仍存在两类问题。 第一类问题为单机性能不足问题 每个redis实例存有全部数据,当数据量特别大,超过了单机内存容量的时候无法处理。 虽然sentinal能将读操作分给从机处理实现部分负载均衡功能,若并发写压力特别高,主服务器也会承受不住。 实现sentinal后,客户端不再直接连接特定redis实例,而是连接sentinel的ip和port,由sentinel来提供具体的可提供服务的Redis实现。存在流量瓶颈问题。 为了解决这三个问题,Redis cluster提供在多个Redis间节...
Redis入门-应用场景
更多Redis入门系列文章,参见Redis入门-大纲 缓存为什么使用redis做缓存性能和并发两个角度:1)我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。2)在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问数据库。 redis vs. memCache vs. ehCache三者都可以用来做缓存MemcacheMemcache可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS,适用于最大...
Redis入门-定时函数serverCron
更多Redis入门系列文章,参见Redis入门-大纲 Redis将serverCron作为时间事件来运行,从而确保它每隔一段时间就会自动运行一次,又因为serverCron需要在Redis服务器运行期间一直定期运行,所以它是一个循环时间事件: serverCron 会一直定期执行,直到服务器关闭为止。 在 Redis 2.6 版本中, 程序规定 serverCron 每秒运行 10 次, 平均每 100 毫秒运行一次。从 Redis 2.8 开始,用户可以通过修改 hz 选项来调整 serverCron的每秒执行次数。 redis的serverCron函数,执行期间需要做11件事:...
Redis入门-基本数据类型
此篇文章仅从理论上介绍Redis的基本数据类型,有关各类型的具体操作,可见Redis常用命令总结更多Redis入门系列文章,参见Redis入门-大纲 RedisObjectRedis内部使用一个redisObject对象来表示所有的key,value。 type代表一个value对象具体是何种数据类型,有5种基本数据类型,分别是:String、List、Set、Hash、SortedSet(ZSet)。 encoding是不同数据类型在redis内部的存储方式,比如:type=string代表value存储的是一个普通字符串,那么对应的encoding可以是raw或者是int,如果是in...
Redis入门-大纲
入门系列主要是为了让看过的人对这门技术有个初步了解,被问及相关问题有话可说。系列的重点在于对概念与理论的一些描述,也会设计一些简单的编码。想要这门技术的大神,光看这个肯定是不够滴~ Redis 是什么?通常而言目前的数据库分类有几种,包括 SQL/NSQL,关系数据库,键值数据库等等 等,分类的标准也不以,Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数 据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)的数据,而且还能完成排序(SOR...
avatar
疯狂的小鸡
─=≡Σ(((つ•̀ω•́)つ
FRIENDS