Если возникает вопрос "память или файл?", это значит что есть какие-то проблемы хранения в памяти: данных много и памяти может не хватить, данные должны сохраниться при перезапуске приложения, данные должны быть доступны из других приложений/инстансов, что-то ещё.
В таком случае задачу хранения/записи/чтения данных лучше поручить отдельному сервису. Про базы данных уже сказали, я немного дополню. Если данные можно свести к такому представлению как пара ключ-значение, можно использовать базы данных NOSQL или сервисы типа Redis. Помимо стандартного интерфейса доступа и высокой скорости, они обладают хорошим качеством - их можно конфигурировать.
Допустим, ты поначалу настроил сервис на хранение данных в памяти, а потом решил что для надёжности надо отписывать данные на диск (все, не все, сразу, периодически и т.п.). Ты просто прописываешь соответствующий конфиг - и всё, сервис начинает работать по-другому. А для твоего приложения ничего не изменилось (ну, кроме скорости доступа).