根据这一线索 ,Jedis是,如果我想使用的Redis从Java使用的最好的事情。
但是,如果有同样提供高效的操作集于那些已经存在于Redis的,而是可以直接嵌入在Java应用程序,而无需设立单独的服务器上的库/包我想知道。 (即使用码头的Web服务器)。
更精确地说,我想能够做到有效地执行以下操作:
- 还有一大组M个用户的(M事先不知道)。
- 有一大套的N项。
- 我们希望用户能够检查的项目,一个用户/项目的时间,其产生的结果存储(在正常的数据库。)
- 每个用户到达时,我们要分配给该用户与用户尚未见过的现有成果数最少的项目。 这将产生项目对所有到达的用户,当我们只关心让所有的物品看着大致相同次数的近似循环分配。
以上发生在并行的方式。 当M和N是大的,Redis的完成比SQL查询上述更有效。 是否有某种方式来做到这一点使用一个嵌入式的Java库,略高于启动Redis的服务器更轻盈?
我承认,它可能编写出使用,将大致接近这个Java的并发库的代码一堆(在一定程度上,我已经做到了),但是这不正是我要找的在这里。
看看项目伏地魔 。 这是通过链接,在创建一个分布式key-value存储,并支持被嵌入的能力。
在快速入门指南是运行嵌入式与独立服务器的一个小例子。
VoldemortConfig config = VoldemortConfig.loadFromEnvironmentVariable();
VoldemortServer server = new VoldemortServer(config);
server.start();
我不知道很多关于Redis的,所以我不能对它们进行比较,以特色功能。 在我们使用伏地魔的项目中,我们使用它的只读的备份存储很大的成绩。 它使我们能够“预编译”双日常数据库在我们的数据处理中心和“出货”走出去边的数据中心。 这样,每一个边缘的数据中心有它的一个本地副本的数据集。
编辑:重读你的问题,我想补充Gauva的表 -此表数据结构也可能是一些你想找的是simlar你有许多没有SQL数据库得到什么。
Hazelcast提供了许多分布式数据结构的实现,其可以被用作纯Java替代Redis的服务。 然后,您可以发货单“罐子”的所有所需的相关性来运行应用程序。 您可能需要调整相对于Redis的在自己的应用程序略有不同的图元。
在这个空间的商业解决方案包括陶土的企业级Ehcache和Oracle Coherence的 。
看看lmdb(闪电内存数据库),因为我需要完全一样的东西。 我部署dropwizard应用到容器中,并加入redis的或另一外部扶养是痛苦的。 这似乎表现良好,具有较好的活性。 仅供参考,不过,我还没有在生产中使用这个。
https://github.com/lmdbjava/lmdbjava
谷歌的番石榴库提供了Redis的提供相同(多)设置运营商的友好版本。
https://code.google.com/p/guava-libraries/wiki/CollectionUtilitiesExplained
如
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
多集是Redis的分类集一个相当简单的代理也是如此。