redis 集群
根据之前的诸多分析,我们知道单机的redis有很多的局限性,所以可以使用多台机器来实现分区存储,构建更大的数据库,满足更高的业务需求。
之前我们实现的主从复制,可以实现一主多从的架构,但是抽象来看,其实也只是一个redis架构,只有一个主库实现读写,并不是多主多从的结构,所以我们需要redis集群来分散单台服务器的访问压力,实现负载均衡,同时减轻单机的存储上限,提高扩展性。
单机架构
在redis3.0时,提供了redis cluster来满足集群搭建的需求,可以进行手动搭建,分配节点和节点握手,然后手动分配槽。
同时官方提供了redis-trib.rb的ruby脚本,推荐使用该脚本来实现快速搭建和管理。值得一提的是,单机redis本身是有0-15个数据库的,而集群中每个redis节点只有db0。
集群架构
数据分区
如果是单机存储的话,直接将数据存放在单机redis就行了。但是如果是集群存储,就需要考虑到数据分区了。
数据分区通常采取顺序分布和hash分布。
分布方式 |
顺序分布 |
哈希分布 |
数据分散度 |
分布倾斜 |
分布散列 |
顺序访问 |