Metadata-Version: 2.1
Name: CacheToolsUtils
Version: 1.0.0
Summary: Cachetools Utilities
Home-page: https://github.com/zx80/cachetools-utils
Author: Fabien Coelho
Author-email: cachetools.utils@coelho.net
License: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Description-Content-Type: text/markdown
Requires-Dist: cachetools

# cachetools-utils

Classes to add key prefix and stats to
[cachetools](https://pypi.org/project/cachetools/) classes and use
[redis](https://redis.io/) and
[memcached](https://memcached.org/) as storage backends.

## Usage

Install with `pip`:

```Shell
pip install CacheToolsUtils
```

See below.

## Documentation

This module provide the following cache wrappers suitable to use
with `cachetools`:

### PrefixedCache

Add a key prefix.

```Python
import CacheToolsUtils as ctu

base = cachetools.TTLCache(ttl=600)
foo_cache = ctu.PrefixedCache(base, "foo.")
bla_cache = ctu.PrefixedCache(base, "bla.")

@cachetools.cached(cache=foo_cache)
def foo(…):
    return …

@cachetools.cached(cache=bla_cache)
def bla(…):
    return …
```

### StatsCache

Keep stats, cache hit rate shown with `hits()`.

### MemCached

Basic wrapper with JSON key encoding.

```Python
import pymemcache as pmc

mcbase = pmc.Client(server="localhost", serde=ctu.JsonSerde())
cache = ctu.MemCached(mcbase)

@cachetools.cached(cache=cache)
def poc(…):
```

### PrefixedMemCached

Wrapper with a prefix.

```Python
pcache = ctu.PrefixedMemCached(mcbase, prefix="pic.")
```

### StatsMemCached

Wrapper with stats actually taken from the MemCached server.

### RedisCache

TTL'ed Redis wrapper, default ttl is 10 minutes.

```Python
import redis

rd_base = redis.Redis(…, ttl=60)
cache = ctu.RedisCache(rd_base)
```

### PrefixedRedisCache

Wrapper with a prefix and a ttl.

### StatsRedisCache

Wrapper with stats (call `hits()`) and a ttl.

## License

This code is public domain.

## Versions

### 1.0.0 on 2022-01-29

Add `set`, `get` and `delete` forwarding to `RedisCache`, so that redis
classes can be stacked.

### 0.9.0 on 2022-01-29

Initial version extracted from another project.


## TODO

- improve documentation
- add a `close`?


