Я собираюсь подойти к этому вопросу с позиции исключительно кеширования, а не контекста пьес и треков.
При принятии решения о кэшировании данных важно учитывать, каковы зависимости и как срок действия кэша.
Если срок действия кеша каждого пользователя может истекать индивидуально, то как у вас это нормально. Если выясняется, что срок действия одной записи истекает, следует сделать недействительным весь набор записей, затем поместить его в ArrayList и выгрузить весь объект.