跳到主要内容

redis_tips

认知

集群:解决数据量大,请求量大,实例水平扩展的问题(一般对key进行hash,分散数据)

容灾:主从+哨兵 同城多活(或冷备) 异地多活等

路径

为了保证redis高可用,主要有一下几个方面:

集群化方案

1.代理方案(服务端分片)

1.1Codis

客户端和服务端增加一个代理层,在代理层实现请求转发,转发到后面的多个redis节点上

功能比较齐全,除了请求转发,还是先了在线数据迁移、节点扩容缩容、故障自动恢复等

集群划分为1024个槽位,采用crc32hash算法计算key的hash值,对1024取模找到具体的redis节点

codis基于redis的3.2.8版本作了二次开发,目前已停更,无法升级redis版本

有些命令如keys不支持

1.2Twemproxy

twitter开源方案,可以作redis和memcached的proxy

功能单一,只实现请求路由转发(客户端分片逻辑放到了proxy层),没有其他功能

2.直接方案(客户端分片)

2.1客户端分片

客户端采用hash或者一致性hash算法,把相应的key写到指定的redis里

2.2Redis Cluster

必须使用smart client,请求转发的逻辑放在了smart client中,采用16385个槽位进行路由规则的转发

同时提供在线数据迁移,节点扩容缩容等功能,内置了哨兵完成故障自动恢复

文章内容来自于:Redis集群化方案对比:Codis、Twemproxy、Redis Cluster | Kaito's Blog