Cache flip

Cache flip

The previous desicussion of the cache design skipped the larger design: The cache is actually two tables, NEW and OLD.

Cache new and old

The NEW cache gets priority. And new data is only added the the NEW cache.

Cache old gets hit

In this case, the 28.CC03 presence was only on the old cache.

Gradually the OLD cache will become increasingly stale and irrelevant.

  • New data is never added to the OLD cache
  • Updated values in the NEW cache will hide the old data
  • Even the most stable old data eventually times out. 

Cache old decaying

When the OLD cache is entirely expired:

Old cache expired

The OLD cache is now useless. We can

  • Clear the OLD cache
  • Make the NEW cache "OLD" (stop adding data).
  • Create a clean NEW cache.

Cache flip

This is the FLIP.  

The advantages for this design are:

  • No scans for old data need to be done.
  • No separate cache management process or thread is needed.
  • No cache activity occurs except when a 1-wire program is queried (better for hardware hibernation).
  • The risk of memory leaks is minimized.