You are given an in-memory LRU (Least Recently Used) cache implementation that supports O(1) get(key) and put(key, value) operations. Your task is to extend this cache so that its full state is automatically persisted to disk on every write and can be exactly restored if the process crashes and restarts. Specifically, implement two new methods: persist(path) which writes the current cache content to the specified file, and load(path) which reads that file and reconstructs the cache with the same capacity, content, and LRU order that existed at the moment of the last successful persist. The on-disk format is up to you, but it must be human-readable and reproducible across runs. Both new methods must run in O(n) time where n is the number of entries, while get/put must remain O(1).