我有一个mysql数据库,其中一个表具有以下属性:
p1、p2、p3、c1、c2、c3,其中p1、p2和p3是主键。现在的问题是,我想以一种“节省时间”的方式将其映射到redis,如果可能的话,也要“节省空间”。
这就是我的想法:
场景1:
p1->哈希映射(c1、c2、c3)
P2->P1页
P3->P1页
但在这里,我需要两个操作(66%的概率)来获取所需的c1,c2,c3值。p1占用的额外空间(两次)也是一个问题。
情景2:
p1:p2:p3->哈希映射(c1、c2、c3)
但这里的问题是,如果不知道所有的主键,就无法获取hashmap。
简而言之,我的目标是使用p1、p2或p3中的任何一个(不是全部)以时间有效的方式获取c1、c2和c3。

最佳答案

采取第一种方法。是的,它在内存方面的成本会更高,是的,在66%的情况下(假设要获取p1、p2、p3值的均匀分布),您必须执行两个操作,但是,正如您所指出的,另一种选择是将所有p都放在键的名称中。另一种方法虽然在技术上可行(例如,您可以从数据库中获取所有密钥[当然是使用scan,而不是keys],然后在应用程序中过滤它们,以根据您拥有的p查找所需的密钥),但在操作/性能方面要贵得多。
换句话说,这是一个典型的Space-Time tradeoff案例。

关于mysql - 将MySQL中的主键映射到Redis,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25599690/

10-15 09:10