A Cache, like APC, memcached or Xcache usually has a lifetime before it gets stale. There won't be any calls to the database whatsoever as long as the cache is not stale. Note that no calls are preferable over cached recordsets from the database, because no calls save the entire roundtrip.
If your application is the only writing source to your database, you can manually force the cache to expire before it's set lifetime whenever someone writes to the database. Subsequent queries would then recache when the query is run.
If there is other sources, e.g. remote servers, you'd have to implement a trigger inside the database that informs all applications using the database of the change. A message queue is best used for this.