主从复制:
Redis支持一主多从的主从复制架构。一个Master示例负责所有的写请求,然后将写操作同步到所有的slave。
可以实现读写分离。
可以实现高可用,但是不是强一致性
借助Redis Sentinel实现高可用,当Master crash后,能自动将一个Slave晋升为Master。
集群分片
采用集群分片可以扩展容量和并发量。
一般可分为客户端分片,大多以代理的方式来实现,如Twemproxy;另外官方也提供了Redis Cluster方案。
Redis Cluster
a.能自动将数据分散在多个节点上
b.当访问的key不在当前分片上时,能自动将请求转发到正确的分片上
c.当集群中部分节点失效时仍能提供服务(主从复制实现,没有Sentinel,由Redis Cluster实现failover)
原理:Redis Cluster有16384个hash slot,Redis会计算每个key的CRC16,将结果与16384取模,来决定该key存储在哪个hash slot中;同时需要制定每个数据分片负者的slot数。