我正在考虑终止我的 hazelcast 集群的用户 Activity session 。
我们有 session 图,每个 session 似乎有两个条目
[SESSIONID] 映射到 boolean 值 和 [SESSIONID]::hz::user 映射到我们的用户对象
我认为杀死 session 的方式是我必须循环遍历映射并找到用户对象,一旦找到,删除该条目解析 key 并查找映射到 boolean 值的其他 sessionId 并杀死它。
我缺少更简单的方法吗?
最佳答案
Hazelcast Mastering 书中对此有很好的描述: http://hazelcast.org/mastering-hazelcast/ 您需要注册才能阅读该书。 您可以使用谓词:
- 标准 API
- 分布式 SQL 查询
- 用于在 map 中搜索 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);
}
关于java - Hazelcast 终止用户 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36582438/