2014-09-01 97 views
0

我有一個mysql數據庫,其中一個表的屬性爲: p1,p2,p3,c1,c2,c3,其中p1,p2和p3是主鍵。現在的問題是,我想以「時間效率」的方式將其映射到Redis,並且如果可能的話,也是「空間有效的」。 這是心裏想:將MySQL中的主鍵映射到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中。

簡而言之,我的目標是以時間有效的方式,使用p1,p2或p3(並非全部一起)獲取c1,c2和c3。

回答

0

採取第一種方法。誠然,從內存的角度來看,它會花費更多,而且,你必須在66%的情況下(假設統一分配p1,p2,p3的值來獲取)執行兩個操作,指出,所有的p都在密鑰的名字中。另一種方法雖然在技術上是可行的(例如,你可以從數據庫中獲取所有密鑰[當然使用SCAN,而不是KEYS]並在應用程序中篩選它們以根據你所擁有的p來找到所需的密鑰)在操作/性能方面昂貴。

換句話說,這是Space-Time tradeoff的經典案例。