HermesCache 1.0.0

Creator: rpa-with-ash

Last updated:

Add to Cart

Description:

HermesCache 1.0.0

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

Note
The API encourages import-time instantiation of Hermes facade to allow
decoration of existing classes and functions, to make caching transparent
to them. The instantiation has no side-effects. Underlying backend
connections are lazy.
Moreover, if backend configuration is only available at runtime,
Hermes.backend instance can be replaced at runtime.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.