簡體   English   中英

Spring Cache:使用 memcached 作為分布式緩存

[英]Spring Cache: Using memcached as a distributed cache

對於許多 Java 服務,我們使用 AWS ElastiCache 作為由 Spring Cache 抽象和 spymemcached 集成的分布式緩存。

在一項服務中,我看到我得到的結果類型與我預期的不同,從而導致 ClassCastException。 准確地說:我有一個緩存鍵,因此我期望一個 List,但我得到的是 Type2 的結果。

我們定義了許多緩存,其中一些使用相同的緩存鍵:

Cache1:
cacheKey -> List<Type1>

Cache2:
cacheKey -> Type2

由於它們位於不同的緩存中,因此當我們使用基於簡單哈希圖的緩存時,這會起作用。 然而,對於 ElastiCache/Memcached,我們似乎並沒有真正擁有不同的緩存(從我對 memcached 的了解來看,這是有道理的——這並不多)。

我原以為 spymemcached 會通過操作緩存鍵來解決這個問題,這樣應用程序就不需要知道實際的緩存實現(這可以通過操作緩存鍵並在它們前面加上緩存名稱即 ie 來完成)。

從一些調試會話和我看到的錯誤來看,情況似乎並非如此。

我專門研究過這門課:

com.google.code.ssm.spring.SSMCache

L82:  value = cache.get(getKey(key), null);
L154: private String getKey(final Object key) {
L155:    return key.toString();
L156: }

我本來希望 getKey() 方法以緩存名稱作為前綴。

所以我的問題是:

  1. 我是否正確理解這里發生了什么?
  2. 是否可以使用 spymemcached 進行配置以使其按預期方式運行?

此外,任何其他想法都是appriciated! 謝謝!

好的,我發現這是simple-spring-memcached 3.2.0 版的問題。 3.3.0 版修復了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM