pdqn.net
当前位置:首页 >> REDis集群方案应该怎么做 >>

REDis集群方案应该怎么做

通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取.Redis是一个很好的Cache工具.大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在这种情况下,如何正确架构Redis呢?首先

1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.2、节点的fail是通过集群中超过半数的节点检测失效时才生效.3、客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可.4、redis-cluster把所有的物理节点映射到[0-16383]slot上(不一定是平均分配),cluster 负责维护node<->slot<->value.5、Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中.

Redis 因具有丰富的数据结构和超高的性能以及简单的协议,使其能够很好的作为数据库的上游缓存层.但在大规模的 Redis 使用过程中,会受限于多个方面:单机内存有限、带宽压力、单点问题、不能动态扩容等.基于以上, Redis 集群方案

Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合. 支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能. 所以Redis也可以被看成是一个数据结构服务器.

主要是使用redis进行数缓存和前端服务器进行分流,如果不明白可以看看本人资料.

将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问题.

什么是Redis sharding集群Redis(redis.io)作为最流行的KV数据库,很长一段时间都是单机运行,关于如何实现Redis的数据在多个节点上的分布,在Redis3.0出来之前,有很多第三方的方案. :Client hash这是最简单的实现,通过在客户端利用一致性hash算法,将数据分布到不同节点.这种方法的缺点非常明显,缺少故障自动failover能力,并且在扩容时数据分布的搬迁,也比较费劲.代理模式一个是Redis官方推荐的Twemproxy,是由twitter公司开发;另一个是国内豌豆荚开源的codis;代理模式最大的好处是仍然使用redis单机的sdk进行开发,维护简单.

为什么集群?通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取.Redis是一个很好的Cache工具.大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在这种情况下,如何正确架构

在大部分的情况下StackExchange.Redis 会自动的帮我们配置很多选项. 比如 服务器类型,版本, 超时时间 , 主从服务器等.. 尽管如此,有时候我们需要在服务器上面排除一些命令, 这种情况下有必要提供更多信息!

1、准备redis镜像Redis官方已经提供了Redis 3.2和3.3的镜像,都可以用来作为Redis集群的镜像,3.2是稳定版本.目前官方推出了alpine版本的Redis镜像,alpine镜像的优势是体积小.此次分享是采用官方的redis:3.2-alpine的镜像来做集群.2、准备初始化脚本的执行环境redis官方提供了一个ruby的脚本redis-trib.rb,这个脚本可以用来初始化集群、resharding集群、rebalance集群等.

网站首页 | 网站地图
All rights reserved Powered by www.pdqn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com