EEPROM is the way to go to store values that have to survive power down. That's what it's meant for, plain and simple.
To save your cycles, use EEPROM.update() as that will only write the data if it's different from what's in EEPROM already. It has a limit on write cycles, not on read cycles.