部分内容摘自:
【redis cluster mget 引发的讨论 - 简书】
【redis cluster如何高效率的跨节点间使用mget ? - 知乎】
首先,cluster是不支持mutlikey操作的,例如:mget
【mget】
redis之上的中间层对mget包一层,方案:
方案一:传统的串行IO操作,也就说n个key,分n次串行操作来获取key,复杂度是o(n)。
方案二:将Mget操作(n个key),利用已知的hash函数算出key对应的节点,这样就可以得到一个这样的关系:Map<node, somekeys>,也就是每个节点对应的一些keys,这样将之前的o(n)的效率降低到o(node.size())。
方案三:在方案二的基础上将串行取数据改为并行取数据,进一步提高效率。
方案四:通过redis自带的hashtag功能,强制一批key分配到某台机器上,不推荐使用。
【pipline】
退而使用pipline串行获取方式。