Redis篇
1.Redis与Memcache能力对比
| 工作 | MemCache | Redis |
|---|---|---|
| 数据类型 | 简单 key/value 结构 | 丰富的数据结构 |
| 持久性 | 不支持 | 支持 |
| 分布式存储 | 客户端哈希分片/一致性哈希 | 多种方式,主从、Sentinel、Cluster 等 |
| 多线程支持 | 支持 | 支持(Redis5.0及以前版本不支持) |
| 内存管理 | 私有内存池/内存池 | 无 |
| 事务支持 | 不支持 | 有限支持 |
| 数据容灾 | 不支持,不能做数据恢复 | 支持,可以在灾难发生时,恢复数据 |
2.Redis集群切片的常见方式
| 集群切片方式 | 核心特点 |
|---|---|
| 客户端分片 | 在客户端通过key的hash 值对应到不同的服务器。 |
| 中间件实现分片 | 在应用软件和 Redis 中间,例如:Twemproxy、Codis 等,由中间件实现服务到后台Redis节点的路由分派。 |
| 客户端服务端协作分片 | 客户端与服务端协作完成分片处理。 |
3.Redis分布式存储方案
| 分布式存储方案 | 核心特点 |
|---|---|
| 主从(Master/Slave)模式 | 一主多从,故障时手动切换。 |
| 哨兵(Sentinel)模式 | 有哨兵的一主多从,主节点故障自动选择新的主节点。 |
| 集群(Cluster)模式 | 分节点对等集群,分slots,不同slots的信息存储到不同节点。 |
4.Redis数据分片方案
| 分片方案 | 分片方式 | 说明 |
|---|---|---|
| 范围分片 | 按数据范围值来做分 | 例:按用户编号分片,0-999999 映射到实例A;1000000-1999999映射到实例 B。 |
| 哈希分片 | 通过对key进行hash运算分片 | 可以把数据分配到不同实例,这类似于取余操作,余数相同的,放在一个实例上。 |
| 一致性哈希分片 | 哈希分片的改进 | 可以有效解决重新分配节点带来的无法命中问题。 |