Hazelcast 杀死一个用户会话
Hazelcast killing a user session
我正在考虑为我的 hazelcast 集群终止一个用户活动会话。
我们有会话映射,每个会话似乎有两个条目
[SESSIONID] 映射到布尔值
和 [SESSIONID]::hz::user 映射到我们的用户对象
我认为它终止会话的方式我必须遍历地图并找到用户对象,一旦找到,删除该条目解析密钥并查找映射到布尔值的另一个 sessionId 并将其终止嗯。
有没有我遗漏的更简单的方法?
Hazelcast Mastering 书中对此有详细描述:
http://hazelcast.org/mastering-hazelcast/
你需要注册才能阅读那本书。
您可以将 Predicate 用于:
- 条件API
- 分布式SQL查询
- 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);
}
我正在考虑为我的 hazelcast 集群终止一个用户活动会话。
我们有会话映射,每个会话似乎有两个条目
[SESSIONID] 映射到布尔值 和 [SESSIONID]::hz::user 映射到我们的用户对象
我认为它终止会话的方式我必须遍历地图并找到用户对象,一旦找到,删除该条目解析密钥并查找映射到布尔值的另一个 sessionId 并将其终止嗯。
有没有我遗漏的更简单的方法?
Hazelcast Mastering 书中对此有详细描述: http://hazelcast.org/mastering-hazelcast/ 你需要注册才能阅读那本书。 您可以将 Predicate 用于:
- 条件API
- 分布式SQL查询
- 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);
}