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 重定向实现动态调整。