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