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
- support multi-threading
- support flash
Contributing
We welcome contributions to Cachemon! Please check out our contributing guide for more details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4471a4d42453a093a799724457f754e8e63503ff28236d678e53c8b20b38dfca
|
|
| MD5 |
834b6fa94dc081221ac08edcd9c5eff4
|
|
| BLAKE2b-256 |
20e4a7073a8c0631205e56f5b66cf12d7e32138ed8af51d18d262653bcb3af6e
|
File details
Details for the file cachemoncache-0.0.2-py2.py3-none-any.whl.
File metadata
- Download URL: cachemoncache-0.0.2-py2.py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a7a6adf1b9aa1611b8b0861c8d7c44b07bef4b7fcd8ee2238fa7e1558079de5
|
|
| MD5 |
54808c8efde9a36fc71eabc5a50c9141
|
|
| BLAKE2b-256 |
7215aa921aa9af285a29fb213dc0ba3fffe66bb57838ff048bbbce6e2c915939
|