有没有一个可嵌入的Java替代Redis?

2022-09-01 17:49:41

根据这个线程,如果我想使用Java中的Redis,Jedis是最好的选择。

但是,我想知道是否有任何库/包提供与Redis中已经存在的库/包类似的高效集合操作,但可以直接嵌入到Java应用程序中,而无需设置单独的服务器。(即,使用Jetty作为Web服务器)。

更准确地说,我希望能够有效地执行以下操作:

  1. 有大量的M个用户(M个用户事先不知道)。
  2. 有一大组 N 个项目。
  3. 我们希望用户检查项目,一次一个用户/项目,这会生成存储的结果(在普通数据库中)。
  4. 每次用户到达时,我们都希望向该用户分配具有用户以前从未见过的最少数量的现有结果的项目。这会对所有到达的用户生成项目的近似轮循机制分配,而我们只关心的是让所有项目都以大致相同的次数查看。

上述情况以并行方式发生。当 M 和 N 很大时,Redis 比 SQL 查询更有效地完成上述任务。有没有办法使用比启动Redis服务器更轻量级的可嵌入Java库来做到这一点?

我认识到,使用Java的并发库编写一堆代码是可能的,这些代码大致接近这一点(在某种程度上,我已经这样做了),但这并不是我在这里寻找的。


答案 1

看看伏地魔项目 。它是由Linked-In创建的分布式键值存储,它支持嵌入的能力。

在快速入门指南中,有一个小示例,说明如何运行嵌入式服务器与独立服务器。

VoldemortConfig config = VoldemortConfig.loadFromEnvironmentVariable();
VoldemortServer server = new VoldemortServer(config);
server.start();

我对Redis了解不多,所以我无法将它们与功能进行比较。在项目中,我们使用了Voldemort,我们使用了它的只读支持商店,效果很好。它允许我们在处理数据中心“预编译”一个双日数据库,并将其“交付”到边缘数据中心。这样,每个边缘数据中心都有其数据集的本地副本。

编辑:在重新阅读了你的问题之后,我想添加Gauva的表 - 这个表数据结构也可能是你想要的东西,并且类似于你从许多no-sql数据库中得到的东西。


答案 2

Hazelcast提供了许多分布式数据结构实现,可以用作Redis服务的纯Java替代方案。然后,您可以附带一个包含运行应用程序所需的所有依赖项的“jar”。您可能需要在自己的应用程序中调整相对于 Redis 略有不同的基元。

该领域的商业解决方案包括Teracotta的Enterprise EhcacheOracle Coherence


推荐