According to this thread,如果我想从Java使用Redis,Jedis是最好用的。
但是,我想知道是否有任何库/包提供与Redis中已存在的类似的高效设置操作,但是可以直接嵌入Java应用程序而无需设置单独的服务器。 (即使用Jetty作为Web服务器)。
更确切地说,我希望能够有效地执行以下操作:
以上以并行方式发生。当M和N很大时,Redis比SQL查询更有效地完成上述任务。有没有办法使用比启动Redis服务器更轻量级的可嵌入Java库来做到这一点?
我认识到使用Java的并发库编写一堆代码是可能的,这些库大致接近这个(在某种程度上,我已经完成了),但这并不是我在这里寻找的。 p >
答案 0 :(得分:11)
看看project voldemort。它是Linked-In创建的分布式键值存储,它支持嵌入式功能。
快速入门指南是运行嵌入式服务器与独立服务器的小例子。
VoldemortConfig config = VoldemortConfig.loadFromEnvironmentVariable();
VoldemortServer server = new VoldemortServer(config);
server.start();
我对Redis了解不多,所以我无法将它们与功能进行比较。在我们使用Voldemort的项目中,我们使用它的readonly支持商店,效果很好。它允许我们在我们的处理数据中心“预编译”每日两次的数据库,并将其“运送”到边缘数据中心。这样每个边缘数据中心都有一个数据集的本地副本。
编辑:在重新阅读您的问题之后,我想添加Gauva's Table - 这个表数据结构也可能是您正在寻找的东西,并且与许多无数据库数据库相似。答案 1 :(得分:4)
Hazelcast提供了许多分布式数据结构实现,可用作Redis服务的纯Java替代方案。然后,您可以发送一个包含所有必需依赖项的“jar”来运行您的应用程序。您可能必须在自己的应用程序中调整与Redis略有不同的原语。
此空间中的商业解决方案包括Teracotta's Enterprise Ehcache和Oracle Coherence。
答案 2 :(得分:0)
看看lmdb(Lightning Memory Database),因为我需要完全相同的东西。我将dropwizard应用程序部署到容器中,添加redis或其他外部依赖是很痛苦的。这似乎表现良好,有很好的活动。但是,我还没有在生产中使用它。
答案 3 :(得分:-5)
Google的Guava Library提供了redis提供的相同(和更多)Set运算符的友好版本。
https://code.google.com/p/guava-libraries/wiki/CollectionUtilitiesExplained
e.g。
Guava Redis Sets.intersection(a,b) sinter a b a.count() scard a Sets.difference(a,b) sdiff a b Sets.union(a,b) sunion a b
Multisets也是redis排序集的一个相当简单的代理。