Skip to content

sigma/pcache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

Pcache

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
)

About

persistent caching for Emacs

Resources

Stars

Watchers

Forks

Packages

No packages published