将MySQL中的主键映射到Redis

时间:2014-09-01 06:05:38

标签: mysql redis predis

我有一个mysql数据库,其中包含一个具有属性的表: p1,p2,p3,c1,c2,c3,其中p1,p2和p3是主键。现在的问题是,我想以“节省时间”的方式将其映射到Redis,如果可能的话,也是“空间有效”的。 这就是想法:

场景1:     p1 - > HashMap(c1,c2,c3)
    p2 - > P1
    p3 - > P1

但是在这里,我需要两次操作(概率为66%)来获取所需的c1,c2,c3值。 p1(两次)占用的额外空间也是一个问题。

场景2:     p1:p2:p3 - > HashMap(c1,c2,c3)

但问题是我无法在不知道所有主键的情况下获取hashmap。

简而言之,我的目标是以时间有效的方式获取c1,c2和c3,使用p1,p2或p3(不是全部)。

1 个答案:

答案 0 :(得分:0)

采取第一种方法。确实,它在内存方面会花费更多,是的,你必须在66%的情况下做两次操作(假设p1,p2,p3值的均匀分布来获取)但是替代方案,如你曾经指出过,所有的人都拥有钥匙的名字。替代方案,虽然技术上可行(你可以,例如从数据库中获取所有密钥[当然使用SCAN而不是KEYS]并在应用程序中过滤它们以根据你拥有的p找到你需要的那个),更多在操作/性能方面很昂贵。

换句话说,这是Space-Time tradeoff的经典案例。