pcache provides a persistent way of caching data, in a hashtable-like structure. It relies on `eieio-persistent' in the backend, so that any object that can be serialized by EIEIO can be stored with pcache.
pcache handles objects called "repositories" (pcache-repository
) and
"entries" (pcache-entry
). Each repository is identified by a unique name,
that defines an entry in pcache-directory
. Subdirectories are allowed, by
the use of a directory separator in the repository name.
Example:
(let ((repo (pcache-repository 'plop)))
(pcache-put repo 'foo 42) ; store value 42 with key 'foo
(pcache-get repo 'foo) ; => 42
)
Keys can be pretty much any Lisp object, and are compared for equality using
eql
Optionally, cache entries can expire:
(let ((repo (pcache-repository 'plop)))
(pcache-put repo 'foo 42 1) ; store value 42 with key 'foo for 1 second
(sleep-for 1)
(pcache-get repo 'foo) ; => nil
)