Я знаю, что этот вопрос довольно старый, но помимо возможности совместного использования кэша между несколькими серверами, есть еще один аспект, который не упоминается в других ответах и является истечением значений.
Если вы храните значения в HashMap, и этот HashMap привязан к контексту приложения, он будет увеличиваться в размере, если у вас не истечет срок действия элементов каким-либо образом.Memcached истекает объект лениво для максимальной производительности.
Когда элемент добавляется в memcache, он может иметь время истечения, например, 600 секунд.После истечения срока действия объекта он просто останется там, но если другой объект запросит его, он очистит его и вернет ноль.
Аналогично, когда память memcached заполнена, он будет искать первый просроченный элементадекватного размера и истекают, чтобы освободить место для нового предмета.Наконец, может также случиться так, что кэш заполнен, и у него не осталось элементов, срок действия которых истекает, и в этом случае он заменит наименее используемые элементы.