Skip to main content

Cachetools Utilities

Project description

cachetools-utils

Classes to add key prefix and stats to cachetools classes and use redis and memcached as storage backends, and other utils.

Install

Install with pip:

pip install CacheToolsUtils

See below for example usage.

Documentation

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

PrefixedCache

Add a key prefix.

import CacheToolsUtils as ctu

ct_base = cachetools.TTLCache(maxsize=1048576, ttl=600)
foo_cache = ctu.PrefixedCache(ct_base, "foo.")
bla_cache = ctu.PrefixedCache(ct_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().

scache = StatsCache(cache)

TwoLevelCache

Two-level cache, for instance a local in-memory cachetools cache for the first level, and a larger shared redis or memcached distributed cache for the second level.

cache = TwoLevelCache(TTLCache(), RedisCache())

MemCached

Basic wrapper with JSON key encoding.

import pymemcache as pmc

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

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

PrefixedMemCached

Wrapper with a prefix.

pcache = ctu.PrefixedMemCached(mc_base, prefix="pic.")

StatsMemCached

Wrapper with stats actually taken from the MemCached server.

scache = ctu.StatsMemCached(mc_base)

RedisCache

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

import redis

rd_base = redis.Redis(host="localhost")
cache = ctu.RedisCache(rd_base, ttl=60)

PrefixedRedisCache

Wrapper with a prefix and a ttl.

pcache = ctu.PrefixedRedisCache(rd_base, "pac.", ttl=3600)

StatsRedisCache

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

scache = ctu.StatsRedisCache(pcache)

License

This code is public domain.

Versions

1.1.0 on 2022-01-30

Improved documentation. Add TwoLevelCache. Add 100% coverage test.

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 further.
  • add a close?

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

CacheToolsUtils-1.1.0.tar.gz (5.0 kB view hashes)

Uploaded Source

Built Distribution

CacheToolsUtils-1.1.0-py3-none-any.whl (4.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page