缓存和弹簧

时间:2016-11-02 12:27:38

标签: java spring caching

我想知道一些与spring一起使用的缓存库。我希望缓存集中分布,因为我有多个服务器。这也排除了番石榴(内存缓存)。 Redis / Jedis和Couchbase是两个选项,但缺乏对java的支持。他们需要所有java对象/ bean都可以序列化。 Guava支持java但正在进行中。 Redisson似乎很好,但我读到它与Jedis相比缺乏支持和维护。

我想在很大程度上防止代码更改,因此不希望我的bean实现Serializabe,我也不想将我的对象转换为Json或Strings。

1 个答案:

答案 0 :(得分:1)

对我来说,你的要求是相互矛盾的。 你需要选择一个

  1. 无序列化。但这仅适用于单个JVM 中的缓存。
  2. 分布式缓存。存储在应用程序JVM之外的数据。可能有很多节点。但这需要某种序列化。无论是java序列化,JSON,Arvo,Kryo,Parquet,protocollBuffers ......数据都是通过网络以序列化形式传输的。
  3. 无论您选择什么,http://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html都会对您有所帮助。它支持

    • 基于JDK ConcurrentMap的缓存
    • 基于Ehcache的缓存
    • 咖啡因缓存
    • 番石榴缓存
    • 基于GemFire的缓存
    • JSR-107缓存

    为什么你相信Redis/Jedis and Couchbase are lacking support for java? 他们有很好的支持,但你的对象必须被序列化。

    对于Redis,http://docs.spring.io/spring-data/redis/docs/1.7.4.RELEASE/reference/html/#redis:support:cache-abstraction

    支持缓存抽象

    Couchbase https://github.com/couchbaselabs/couchbase-spring-cache

    存在类似项目