Flexible, multi-layer key-value persistence library for Python and MicroPython. In-memory, file, and HTTP storage, with simple pluggable API.
- Persistent key-value storage with multiple, cascading "layers"
- Storage backends: RAM, JSON file, remote HTTP
- Supports async and sync use
- Lightweight, only core Python dependencies
- Optional HTTP server for networked persistence
pip install layered-persistence
or
python -m pip install layered-persistence
or
python3 -m pip install layered-persistence
from layered_persistence import LayeredPersistence, RuntimeLayer, FileLayer
# Use both in-memory (fast) and file (persistent) layers
store = LayeredPersistence(layers=[
RuntimeLayer(),
FileLayer(directory="./data")
])
# Store and retrieve a value
await store.set('foo', {'bar': 123})
val = await store.get('foo')
await store.set('foo', {'bar': val["value"]["bar"]+1})
print(val) # {'value': {'bar': 123}}
RuntimeLayer
— Fastest, memory only, cleared on reboot.FileLayer
— Stores each key as./directory/key.json
.HttpLayer
— For network/remote server persistence (see docs).
Layers can be stacked; reads backfill for speed, writes cascade for durability.
Expose your store as a simple HTTP API:
from layered_persistence import serve_via_http, LayeredPersistence, RuntimeLayer
store = LayeredPersistence([RuntimeLayer()])
serve_via_http(store, port=8080)
MIT