Ваш кэш является энергозависимым хранилищем, вы должны написать свое программное обеспечение так, чтобы оно ОЖИДАЛО, что кеш недоступен. например,
public DtoThing GetSomeData(string parameters)
{
if (<check cache for data> == <not there>)
return <get data from persistent store>
else
return <get data from cache>
}
Если вы используете базу данных в качестве резервного хранилища для кеша, вы в основном просто отменили все преимущества использования кеша. Когда вы говорите, что кэш должен быть надежным, вы говорите, что обновления должны быть согласованными или что данные всегда должны быть в кеше? Если первое, легко убедиться, что это происходит, пока вы пишете свое программное обеспечение таким образом, что существует только один путь для обновления данных, а затем этот путь может сделать недействительным кэш-память после успешного выполнения его записи в постоянное хранилище данных.