Skip to main content

a cache library with dict interface

Project description

CachemonCache: A Python Package for Caching

CachemonCache is a package that provides efficient and fast caching in Python, including

  • Caching with different eviction algorithms, e.g., FIFO, LRU, S3FIFO, Sieve
  • Tiered caching using your flash
  • Thread-safe caches for multi-threaded applications

It uses a similar interface as dict so it can be used as a drop-in replacement for Python dict to save space.

News

  • 2023-08-01: CachemonCache is under development!

Installation

pip install CachemonCache

Usage

# you can import FIFO, LRU, S3FIFO, Sieve
from cachemonCache import LRU
from cachemonCache import S3FIFO

# create a cache backed by DRAM, use S3FIFO eviction if you care about hit ratio
cache = LRU(size=10) # or cache = S3FIFO(size=10)

# create a cache backed by your local flash, size is the number of objects in DRAM cache
cache = S3FIFO(size=1000, flash_size_mb=1000, path="/disk/cachmon.data")

# put an item into the cache
cache.put("key", "value")  # or cache["key"] = "value"
# you can specify a TTL using cache.put("key", "value", ttl=10)

# get an item from the cache
cache.get("key")

# delete an item from the cache
cache.delete("key")  # or del cache["key"]

# check if an item is in the cache
"key" in cache  # or cache.has("key")

# get the size of the cache
len(cache)

# add a callback for eviction
def callback(key, value, *args, **kwargs):
    print("key: {}, value: {}".format(key, value))
cache.add_callback(callback)

# list all items in the cache
print(cache.items())  # or print(cache.keys())

# get some stat
print(cache.stats())  # or cache.miss_ratio()

Cachemon can also be used as a decorator to cache the return value of a function similar to the functools in standard library.

from cachemonCache import S3FIFO
@S3FIFO(size=1000, flash_size_mb=1000, path="/disk/cachmon.data")
def foo(x):
    return x + 1

Benchmark

Python RocksDB

Road map

  1. support multi-threading
  2. support flash

Contributing

We welcome contributions to Cachemon! Please check out our contributing guide for more details.

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

cachemoncache-0.0.2.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

cachemoncache-0.0.2-py2.py3-none-any.whl (16.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file cachemoncache-0.0.2.tar.gz.

File metadata

  • Download URL: cachemoncache-0.0.2.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.12

File hashes

Hashes for cachemoncache-0.0.2.tar.gz
Algorithm Hash digest
SHA256 4471a4d42453a093a799724457f754e8e63503ff28236d678e53c8b20b38dfca
MD5 834b6fa94dc081221ac08edcd9c5eff4
BLAKE2b-256 20e4a7073a8c0631205e56f5b66cf12d7e32138ed8af51d18d262653bcb3af6e

See more details on using hashes here.

File details

Details for the file cachemoncache-0.0.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for cachemoncache-0.0.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4a7a6adf1b9aa1611b8b0861c8d7c44b07bef4b7fcd8ee2238fa7e1558079de5
MD5 54808c8efde9a36fc71eabc5a50c9141
BLAKE2b-256 7215aa921aa9af285a29fb213dc0ba3fffe66bb57838ff048bbbce6e2c915939

See more details on using hashes here.

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