-2

在我们的项目中,我们已经为对象嵌入了内存中的键值存储,它非常有用,因为它允许我们为它创建索引并根据它查询存储。因此,如果我们有一个“Student”的集合,并且在 student.group 和 student.sex 上有一个复合索引,那么我们可以找到“ABC”组中的所有男学生。删除等也是如此。

现在我们必须采用我们的服务在云中工作,这样会有多个服务器,处理用户请求,它们有一个共享的状态,存储在这个键值索引存储中。我们尝试采用 memcashed 来满足我们的需求,它几乎是理想的——它是快速、简单且经过验证的解决方案,但它没有索引,因此我们不能习惯于搜索我们的临时数据。

有没有其他方法可以拥有远程缓存,就像 memcashed 一样,但有索引?

谢谢你。

4

1 回答 1

4

试试hazelcast,它是一个内存数据网格,在服务器之间分配数据。您可以像在问题中描述的那样拥有索引并查询它们。

用法很简单。只需添加 Hazelcast.jar 并开始编码。它既可以是嵌入式的,也可以是远程的。

这是索引和查询的用法

添加索引

IMap<Integer, Student> myDistributedMap = Hazelcast.getMap("students")
myDistributedMap.addIndex("group", false);
myDistributedMap.addIndex("sex", false);

存储在imdg中

myDistributedMap.put(student.id, student)

;

询问

Collection<Student> result = myDistributedMap.values(new SqlPredicate("sex=male AND group=ABC"));

最后它在云中运行良好。例如:EC2

于 2010-12-20T10:06:55.213 回答