2016-04-12 100 views
0

我正在查找爲我的hazelcast集羣查殺用戶活動會話。Hazelcast查殺用戶會話

我們有會話映射,並且似乎有每節兩個條目

[SESSIONID映射成一個布爾值 和[工作階段] ::赫茲::用戶映射到我們的用戶對象

我看到它殺死一個會話的方式,我必須遍歷地圖並找到用戶對象,一旦發現刪除該條目解析鍵,並尋找其他sessionId映射到布爾值,並殺死它。

有沒有更簡單的方法,我失蹤了?

+0

任何理由,你不只是無效會話對象? – noctarius

回答

2

在Hazelcast Mastering book中有詳細描述: http://hazelcast.org/mastering-hazelcast/ 您需要註冊才能閱讀該書。 您可以使用謂詞:

  1. 標準API
  2. 分佈式SQL查詢
  3. RegexPredicate搜索的SessionID在地圖

假設我們有一個Hazelcast IMAP其中關鍵是一些ID ,該值是一個Person對象,並且我們希望使用以下(和幼稚的)實現來檢索具有給定名稱的所有人:

public Set<Person> getWithNameNaive(String name){ 
    Set<Person> result = new HashSet<Person>(); 
    for(Person person: personMap.values()){ 
     if(person.name.equals(name)){ 
      result.add(person); 
     } 
    } 
    return result; 

Hazelcast的方式來解決這個問題:

public Set<Person> getWithName(String name) { 
    Predicate namePredicate = equal("name", name); 
    return (Set<Person>) personMap.values(namePredicate); 
}