Python caching library with tag-based invalidation and dogpile effect prevention
Project description
HermesCache
Hermes is a Python caching library. It was designed to fulfil the following requirements:
Tag-based O(1) cache invalidation
Dogpile effect (cache stampede) mitigation
Support for multi-threaded, multi-process, multi-machine & asynchronous operation
Cache compression
Modular design (pluggable backends, compressors, serialisers, etc.)
Simple yet flexible decorator API
Implemented backends: redis, memcached, inprocess.
Installation
pip install HermesCache
For Redis and Memcached it has the following extra dependencies.
HermesCache[redis] |
Pure Python Redis client |
HermesCache[redis-ext] |
Pure Python Redis client & C extension parser |
HermesCache[memcached] |
Pure Python Memcached client |
Quickstart
The following demonstrates the most of the package’s API.
import hermes.backend.redis
cache = hermes.Hermes(
hermes.backend.redis.Backend,
ttl = 600,
host = 'localhost',
db = 1,
)
@cache
def foo(a, b):
return a * b
class Example:
@cache(tags = ('math', 'power'), ttl = 1200)
def bar(self, a, b):
return a ** b
@cache(tags = ('math', 'avg'), key = lambda fn, a, b: f'avg:{a}:{b}')
def baz(self, a, b):
return (a + b) / 2
print(foo(2, 333))
example = Example()
print(example.bar(2, 10))
print(example.baz(2, 10))
foo.invalidate(2, 333)
example.bar.invalidate(2, 10)
example.baz.invalidate(2, 10)
cache.clean(['math']) # invalidate entries tagged 'math'
cache.clean() # flush cache
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file HermesCache-1.0.0.tar.gz
.
File metadata
- Download URL: HermesCache-1.0.0.tar.gz
- Upload date:
- Size: 24.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fa79dde04d1295176805c0fd2c146ce5c374a10700328b04c3d6b402b3e576ab |
|
MD5 | 8ed9f23c36faac667fc92a95e03b0c29 |
|
BLAKE2b-256 | 46892bb807d45052e3ec63af6d38c8a01ee5760711c9184165688fb3d850c877 |