ZEO Client Cache

The client cache provides a disk based cache for each ZEO client. The client cache allows reads to be done from local disk rather than by remote access to the storage server.

The cache may be persistent or transient. If the cache is persistent, then the cache file is retained for use after process restarts. A non- persistent cache uses a temporary file.

The client cache is managed in a single file, of the specified size.

The life of the cache is as follows:

  • The cache file is opened (if it already exists), or created and set to the specified size.
  • Cache records are written to the cache file, as transactions commit locally, and as data are loaded from the server.
  • Writes are to “the current file position”. This is a pointer that travels around the file, circularly. After a record is written, the pointer advances to just beyond it. Objects starting at the current file position are evicted, as needed, to make room for the next record written.

A distinct index file is not created, although indexing structures are maintained in memory while a ClientStorage is running. When a persistent client cache file is reopened, these indexing structures are recreated by analyzing the file contents.

Persistent cache files are created in the directory named in the var argument to the ClientStorage, or if var is None, in the current working directory. Persistent cache files have names of the form:

client-storage.zec

where:

client – the client name, as given by the ClientStorage’s client
argument
storage – the storage name, as given by the ClientStorage’s storage
argument; this is typically a string denoting a small integer, “1” by default

For example, the cache file for client ‘8881’ and storage ‘spam’ is named “8881-spam.zec”.