2015-06-15 80 views
0

目前我使用的Redis用於以下目的:用於MySQL的Redis的緩存策略與Spring緩存

  1. 緩存網頁。
  2. 緩存SQL查詢導致單一結果

例如:

@Cacheable(value = "memberCache", key = "#username.concat('')") 
public MemberModel findByUsername(String username) { 
    return memMapper.findByUsername(username); 
} 

但問題是如何緩存導致多個結果的SQL查詢。

例如爲:

public List<MemberModel> findWhichAgeBiggerThan(int age) { 
    return memMapper.ageBiggerThan(age); 
} 

現在的結果證明,成爲一個List。當然,我也可以緩存這個結果,但是如果一個新用戶只註冊到系統,這個查詢的結果可能會改變。如果發生這種情況,緩存將失效。如何解決這樣的問題?

非常感謝你!

回答

0

而不是使用列表,您可以使用Redis的哈希值:

你的方法將是這樣的:

public Map<String, MemberModel> findWhichAgeBiggerThan(int age) { 
    // return map with key as String(may be user id) and actual MemberModel 
} 

這整個圖可以保存對一個超級鍵說,「成員」和個人數據與student1,STUDENT2密鑰保存如下

hset members student1 MemberModel1 student2 MemberModel2 

要添加的任何其他數據簡單地使用上面的命令與數據paricular像

hset members student_new MemberModel_new 

這裏成員將使用新數據添加/更新現有的「nembers」鍵。