Если база данных, которая вам нужна в памяти, в основном предназначена только для чтения, я бы сохранял кэш в памяти, но всякий раз, когда происходит запись, я распространял это изменение непосредственно в базу данных. Таким образом, если приложение выходит из строя, у вас уже есть текущее состояние в базе данных.
Это должно быть очень просто написать с использованием карты (или серии карт, если вам нужно несколько ключей для доступа к данным).