Это зависит от вашего сценария использования.
Если стоимость загрузки вашего кэша минимальна (в минутах), и вы можете позволить себе время простоя ... тогда я не вижу проблем в простой перестройке вашего кэша для новой версии.
Если у вас высокая стоимость заполнения кеша (часы / дни) и вы не можете позволить себе сколько-нибудь значительных простоев, тогда вам придется обрабатывать новую и старую версию одновременно в течение переходного периода.
Для этого:
- Я бы определил отдельное определение кэша для любой новой версии
кешированный класс и срок действия старой версии в кеше истекает.
- Код приложения также должен иметь поддержку «старой / новой версии».
- Иметь экземпляр, который будет работать со старой версией до тех пор, пока данные
истекает / устарела (на основе старого имени кэша)
- Иметь экземпляр, который обрабатывал все новые запросы / потоки с новым
версия (на основе нового имени кэша)
например. в ehcache.xml вы определяете 2 кэша (на основе вашего примера):
<cache name="com.xyz.Car" timeToLiveSeconds="600"/>
<!--New version goes here-->
<cache name="com.xyz.Car2" timeToLiveSeconds="600"/>
В долгосрочной перспективе вы должны выработать соглашение о присвоении имен для ваших кешей, которое включает в себя эволюцию версий.