根据这个线程 https://stackoverflow.com/questions/3047010/best-redis-library-for-java,如果我想从Java中使用Redis,Jedis是最好的选择。
然而,我想知道是否有任何库/包提供与 Redis 中已有的库/包类似的高效集合操作,但可以直接嵌入到 Java 应用程序中,而不需要设置单独的服务器。 (即使用 Jetty 作为 Web 服务器)。
更准确地说,我希望能够有效地执行以下操作:
- 有一大组 M 个用户(M 事先未知)。
- 有一个包含 N 个项目的大集合。
- 我们希望用户检查项目,一次一个用户/项目,这会产生一个存储的结果(在普通数据库中)。
- 每次用户到达时,我们都希望将用户以前未见过的现有结果数量最少的项目分配给该用户。当我们只关心让所有项目被查看大约相同的次数时,这会产生对所有到达用户的项目的近似循环分配。
上述过程以并行方式发生。当M和N很大时,Redis比SQL查询更高效地完成上述任务。有没有什么方法可以使用比启动 Redis 服务器更轻量级的嵌入式 Java 库来做到这一点?
我认识到可以使用 Java 的并发库编写一堆代码来粗略地近似这一点(并且在某种程度上,我已经这样做了),但这并不是我在这里要寻找的。
看一下伏地魔计划 http://www.project-voldemort.com/voldemort/。它是 Linked-In 创建的分布式键值存储,并且支持嵌入功能。
快速入门指南中有一个运行嵌入式服务器与独立服务器的小示例。
VoldemortConfig config = VoldemortConfig.loadFromEnvironmentVariable();
VoldemortServer server = new VoldemortServer(config);
server.start();
我对Redis了解不多,所以无法比较它们的功能。在我们使用 Voldemort 的项目中,我们使用了它的只读后备存储,取得了很好的效果。它使我们能够在处理数据中心“预编译”每日数据库并将其“运送”到边缘数据中心。这样,每个边缘数据中心都有其数据集的本地副本。
编辑:重读你的问题后,我想添加高瓦的桌子 http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Table.html-- 此表数据结构也可能是您正在寻找的东西,并且与您在许多 no-sql 数据库中获得的类似。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)