0
填充鍵值我必須通過@Cacheable填充緩存,多數民衆贊成如下什麼在緩存通過@Cachable
@Cacheable(value = "accountGroupCache")
public List<Acc> getAccInfo(int groupId, String user)
我想知道會有怎樣的鍵值對這個緩存?我正在使用ehcahe來進行緩存。
填充鍵值我必須通過@Cacheable填充緩存,多數民衆贊成如下什麼在緩存通過@Cachable
@Cacheable(value = "accountGroupCache")
public List<Acc> getAccInfo(int groupId, String user)
我想知道會有怎樣的鍵值對這個緩存?我正在使用ehcahe來進行緩存。
關鍵將基於您的getAccInfo()
方法的參數。值將會是您的方法返回的List<Acc>
。
按照docs:
28.3.1.1默認密鑰生成
由於緩存是基本上鍵值存儲,需要一個高速緩存 方法的每一次調用被翻譯成一個合適的鍵緩存 訪問。開箱即用的,緩存抽象使用基於以下算法簡單 的KeyGenerator:
- 如果沒有PARAMS給出,返回0
- 如果只有一個參數是給定的,返回該實例。
- 如果給出了更多的參數,則返回從所有參數的散列計算出來的關鍵字。
看着爲DefaultKeyGenerator的源代碼,這是如何計算「的所有參數的哈希值計算的關鍵」:
int hashCode = 17;
for (Object object : params) {
hashCode = 31 * hashCode +
(object == null ? NULL_PARAM_KEY : object.hashCode());
}