Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zx80/cachetools-utils
Classes to add key prefix and stats to cachetools classes and use redis and memcached backends
https://github.com/zx80/cachetools-utils
cache python
Last synced: 6 days ago
JSON representation
Classes to add key prefix and stats to cachetools classes and use redis and memcached backends
- Host: GitHub
- URL: https://github.com/zx80/cachetools-utils
- Owner: zx80
- License: other
- Created: 2022-01-27T13:31:32.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-03T13:58:18.000Z (3 months ago)
- Last Synced: 2024-10-04T04:18:22.508Z (about 1 month ago)
- Topics: cache, python
- Language: Python
- Homepage: https://zx80.github.io/cachetools-utils/
- Size: 109 KB
- Stars: 26
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# CacheToolsUtils
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,
and other cache-related utils.![Status](https://github.com/zx80/cachetools-utils/actions/workflows/cachetools-utils.yml/badge.svg?branch=main&style=flat)
![Tests](https://img.shields.io/badge/tests-19%20✓-success)
![Coverage](https://img.shields.io/badge/coverage-100%25-success)
![Issues](https://img.shields.io/github/issues/zx80/cachetools-utils?style=flat)
![Python](https://img.shields.io/badge/python-3-informational)
![Version](https://img.shields.io/pypi/v/CacheToolsUtils)
![Badges](https://img.shields.io/badge/badges-8-informational)
![License](https://img.shields.io/pypi/l/cachetoolsutils?style=flat)## Module Contents
For our purpose, a cache is a key-value store, aka a dictionary, possibly with
some constraints on keys (type, size) and values (size, serialization).
This module provides new caches, wrappers and other utilities suitable to use
with `cachetools`.### Cache classes
- `RedisCache` allows to see a Redis server as a python cache
by wrapping a `redis.Redis` instance.
- `MemCached` does the same for a Memcached server.
The utility class `JsonSerde` is a convenient JSON serializer-deserializer
class for Memcached.
- `DictCache` a very simple `dict` cache.### Wrappers to extend cache capabilities
- `PrefixedCache`, `PrefixedMemCached` and `PrefixedRedisCache` add a prefix to
distinguish sources on a shared cache.
- `StatsCache`, `MemCached` and `RedisCache` add a `hits` method
to report the cache hit rate, `stats` to report statistics and
`reset` to reset statistics.
- `LockedCache` use a (thread) lock to control cache accesses.
- `TwoLevelCache` allows to combine two caches.
- `DebugCache` to trace cache calls using `logging`.### Cache utilities
- `cached` decorator: a cachetools replacement which allows to test if a
function result is in cache, and to delete such an entry.
- `cacheFunctions` and `cacheMethods`: add caching to functions or methods.## License
This code is [Public Domain](https://creativecommons.org/publicdomain/zero/1.0/).
All software has bug, this is software, hence… Beware that you may lose your
hairs or your friends because of it. If you like it, feel free to send a
postcard to the author.## More
See the
[documentation](https://zx80.github.io/cachetools-utils/),
[sources](https://github.com/zx80/cachetools-utils) and
[issues](https://github.com/zx80/cachetools-utils/issues) on GitHub.See [packages](https://pypi.org/project/CacheToolsUtils/) on PyPI.