缓存java-backend,可以接受多个密钥&返回多个值

时间:2014-03-06 08:39:42

标签: java caching redis ehcache hazelcast

目前我正在使用hazelcast作为我的应用程序的分布式缓存。它接受一个键并给我价值。 但是,如果缓存可以在一个函数调用中接受多个键并返回相应的值,那么在我的应用程序中它会更有帮助。 可以使用hazelcast吗?或者是否有其他解决方案,如EHCache或Redis?

5 个答案:

答案 0 :(得分:3)

Hazelcast IMap为此提供了getAll api。基本上

Map IMap.getAll(keys); 

为您提供给定键集的键值。

See the javadoc for details

答案 1 :(得分:2)

我不确定redis或hazle cast,但ehcache有这个。看看这个

http://ehcache.org/apidocs/net/sf/ehcache/Ehcache.html

它有这个方法Map getAll(Collection keys)和一堆更多的批量操作方法

检查一下以获得更多解释

http://dancing-devil.blogspot.com/2011/04/ehcache-bulk-operation-apis.html

即将推出的JSR107 / JCache标准已定义批量操作。因此,每个符合标准的缓存都会有这个。

答案 2 :(得分:1)

redis可以帮助您通过MGET命令执行此操作,此外它还为您提供了大量数据结构,您可以通过它们从许多键中获取值。

SET a 10
SET b 20
MGET a b
1)10
2)20
HSET "hash name" "a" 10
HSET "hash name" "b" 20
HGETALL "hash name"
1)a
2)10
3)b
4)20

以上示例显示了如何利用redis执行您需要执行的操作

答案 3 :(得分:1)

是的,标准的JCache API支持这一点。请参阅:https://github.com/jsr107/jsr107spec/blob/master/src/main/java/javax/cache/Cache.java

我今天所知道的JCache的唯一实现是Oracle Coherence;见:http://docs.oracle.com/middleware/1213/coherence/develop-applications/jcache_part.htm

为了充分披露,我在Oracle工作。本文中表达的观点和观点是我自己的,不一定反映我的雇主的意见或观点。

答案 4 :(得分:0)

Redis通过Redisson框架

实现了JCache API(JSR-107)