I'm sure caching will help your situation. It does sound like your current approach is very inefficient however. It would be good to improve that as well as caching. Your cache is limited by memory so unless you have bucket loads of the stuff you are still going to be hitting the database sometimes.
In memory database or Caching solution Page Title Module
Move Remove Collapse