redis
数据类型 :-> key/value,list,set,string,sorted 或 丰富/多种数据结构
多线程支持 :-> Redis5.0及以前版本不支持
分布式存储常见方案 #card
主从模式(Master/Slave) :-> 主要解决读写分离和数据备份,但主库宕机时需人工切换;
哨兵模式(Sentinel) :-> 在主从基础上增加自动化监控与故障转移,提升高可用性;
集群模式(Cluster) :-> 则通过内置的 slot 分片机制,支持多主多从、自动负载均衡,是互联网企业应对大规模业务的主流方案。
集群切片方式客户端分片 #card
即在客户端就通过key的hash值对应到不同的服务器。
逻辑简单但耦合度高,需要客户端维护分片策略
中间件实现分片 #card
在应用软件和Redis中间,例如:Twemproxy、Codis等,由中间件实现服务到后台Redis节点的路由分派。
通过代理层屏蔽复杂性,应用透明,但会引入转发开销;
客户端服务端协作分片
Redis Cluster模式,客户端可采用一致性哈希,服务端提供错误节点的重定向服务slot上。不同的slot对应到不同服务器。
Redis Cluster采用 16384 个 slot,服务端负责管理 slot 与节点映射,客户端根据 key 的 CRC16 计算 slot 并路由到对应节点,若节点迁移则通过 MOVED/ASK 重定向实现动态调整。