Когда использовать новое имя кэша? - PullRequest
3 голосов
/ 12 февраля 2012

Когда мне следует повторно использовать кэш в 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
}

Для данной строки (например, "ровер") эти два метода могут возвращать разные объекты 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'?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Использование разных кешей может работать. Вы также можете использовать тот же кеш, просто установите их с разными ключами, используя SpEL с чем-то вроде следующего:

@Cacheable(cacheName = "dogs", key = "'name.'+#name")
public Dog getBestDogByName(String name) {
    //Find the best dog with the provided name
}

@Cacheable(cacheName = "dogs", key = "'colour.'+#colour")
public Dog getBestDogByColour(String colour) {
    //Find the best dog with the provided colour
}
3 голосов
/ 12 февраля 2012

Всякий раз, когда у вас есть сценарий, в котором один и тот же ключ может привести к разным результатам, вы, вероятно, захотите отдельный кеш.

Пример 1:

getBestDog(name) - использовать имя в качестве ключа из кеша 'best-dogs'

getBestBrownDog(name) - используйте имя в качестве ключа из кеша 'best-brown-dogs'

Пример 2:

getBestDogByName(name) - так же, как в примере 1, используйте имя в качестве ключа из кеша 'best-dogs'

getBestDogByColour(colour) - использовать цвет в качестве ключа из кеша "лучшие собаки по цвету"

Что дает вам 3 тайника: «лучшие собаки», «лучшие коричневые собаки», «лучшие собаки по цвету»

Теоретически, вы можете объединить «лучших собак» и «лучших собак по цвету» ... но, возможно, у вас есть собака, которую называют «рыжая» ... так что это будет неучтенный случай. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...