A simple, persistent key/value cache with no dependencies.
$ pip install pepper-cache
create_cache
- Creates a Cache instance.name: str|Path
- The name of the cache instance, also used for the directory relative to$HOME/.cache
if nopath
is suppliedpath: str = None
- The directory in which to store cache files relative to$HOME/.cache
serializer: "pickle"|"json" = "pickle"
- The serializer to use when writing values to the disk, defaults to"pickle"
my_cache = create_cache("my cache", path="my_app/my_cache", serializer="json")
my_cache = create_cache("my cache") # path arg omitted, path would be $HOME/.cache/my_cache
get_cache
- Retrieves a Cache instance.name: str
- The name of the cache instance to retrievecreate: bool
- Whether to create the cache if it does not exist
my_cache = get_cache("my cache")
my_cache = get_cache("nonexistent cache") # None
my_cache = get_cache("nonexistent cache", create=True) # Now exists!
Cache.set
- Sets an item in the cache. Existing items will be overwritten.key: str
- The name of the cached valuevalue: Any
- The value to storettl: int = 0
- The time in milliseconds that the value should remain in the cache or 0 for indefinitely, defaults to0
cache.set("my key", my_value) # stored indefinitely
cache.set("my key", my_value, ttl=1000) # stored for one second
Cache.get
- Retrieves a value from the cache if it exists and has not expired.key: str
- The key of the cache item to retrievedefault: Any
- The default value to return if the value is not stored
my_value = cache.get("my key 2") # returns None if the value is not stored or has expired. Consider checking if the item exists below
my_value = cache.get("my key 2", default="now has a value")
Cache.has
- ReturnsTrue
if an item exists in the cache by its key.key: str
- The key of the cache item to check the existence of
if not cache.has("my key 2"):
cache.set("my key 2", "has a value!")
Cache.delete
- Deletes an item from the cache if it exists.key: str
- The key of the cache item to delete from the cache
cache.delete("my key 2"):
cache.get("my key 2") # None
"pepper" comes from the code name of a project of mine and instead of writing packages like this specifically for the project, I decided to instead make them full on Python packages that anyone can use.