java – 何时使用新的缓存名称?

我应该何时在Ehcache中重用缓存,何时应该创建一个新缓存?

例1:

我有以下方法:

public Dog getBestDog(String name) {
    //Find the best dog with the provided name
}

public Dog getBestBrownDog(String name) {
    //Find the best brown dog with the provided name
}

对于给定的String(例如“漫游者”),这两种方法可以返回不同的Dog对象.

我应该使用@Cacheable(cacheName =“dogs”)对它们进行注释,还是应该将它们放在两个不同的缓存中,“bestDogs”和“bestBrownDogs”?

例2:

我有以下方法:

public Dog getBestDogByName(String name) {
    //Find the best dog with the provided name
}

public Dog getBestDogByColour(String colour) {
    //Find the best dog with the provided colour
}

名称“流浪者”和颜色“狗狗颜色”可以返回相同的狗.

我应该使用@Cacheable(cacheName =“dogs”)对它们进行注释,还是应该将它们放在两个不同的缓存中,’dogsByName’和’dogsByColour’?

解决方法:

每当您遇到相同密钥可能导致不同结果的情况时,您可能需要单独的缓存.

例1:

getBestDog(name) – 使用名称作为’best-dogs’缓存中的键

getBestBrownDog(name) – 使用名称作为’best-brown-dogs’缓存中的键

例2:

getBestDogByName(name) – 与示例1相同,使用name作为“best-dogs”缓存中的键

getBestDogByColour(color) – 使用颜色作为“best-dogs-by-color”缓存中的键

这给你留下了3个缓存,’最好的狗’,’最好的棕色狗’,’最好的狗 – 颜色’

从理论上讲,你可以合并’最好的狗’和’最好的狗 – 逐个颜色’…但也许你有一只被称为’红色’的狗…所以这将是一个不明的边缘情况.

上一篇:Spring ehcache vs Memcached?


下一篇:java – Springboot和Ehcache – MultiCacheException