分区的意义
-
性能的提升
单机Redis的网络I/O能力和计算资源是有限的,将请求分散到多台机器,充分利用多台机器的计算能力可网络带宽,有助于提高Redis总体的服务能力。 -
存储能力的横向扩展
即使Redis的服务能力能够满足应用需求,但是随着存储数据的增加,单台机器受限于机器本身的存储容量,将数据分散到多台机器上存储使得Redis服务可以横向扩展。
分区的方式
1. 范围分区
根据分区键(id)进行分区:根据id数字的范围比如1–10000、100001–20000…90001-100000,每个范围分到不同的Redis实例
中。
好处:
实现简单,方便迁移和扩展
缺陷:
热点数据分布不均,性能损失
非数字型key,比如uuid无法使用(可采用雪花算法替代)
2. hash分区
利用简单的hash算法即可:
Redis实例=hash(key)%N,key:要进行分区的键,比如user_id,N:Redis实例个数(Redis主机)
好处:
支持任何类型的key,热点分布较均匀,性能较好
缺陷:
迁移复杂,需要重新计算&#