首先我们先了解下什么是redis,redis是一个内存中的数据结构存储系统,它可以用作数据库,缓存和消息队列中间件使用,它支持多种数据类型,例如字符串,散列,列表,集合等等。redis是基于c语言编辑的,并且运行时在内存中,所以它的运算速度很快,可以达到30万/秒运算。
redis为什么要分片呢?redis在整个处理流程中通常是用作数据库或者缓存的,当redis宕机的后,会影响整个流程的执行,因此我们将redis分片,所谓分片其实就是多部署几台redis,将数据尽可能的保存到不同的redis中,当一台redis宕机后只会影响一部分数据,redis分片的优点是可以实现内存的动态扩容,但是redis不能够实现高可用。那么当有多个redis的时候,传进来的数据如何决定存储在哪个redis中呢?在redis底层有一套算法叫做Hash一致性算法,在里面有这样几个特性。
1.均衡性:
尽可能的让信息数据均匀的落入不同的节点中,如果根据hash计算,获取的数据量不是均匀分片的则采用虚拟节点重新进行划分,直到数据达到均衡性的要求,虚拟节点的个数不唯一。
2.单调性
如果节点发生了变化,那么数据可以实现动态的数据迁移,