Basic usage
Initialize a store (see configuration) and basic usage:
from anystore import get_store
store = get_store()
# write data
store.put("key1", "my content")
# get the data
store.get("key1")
# use path-like keys:
store.put("topic/maths", 100)
store.put("topic/engineering", 200)
# iterate topics
for key in store.iterate_keys(prefix="topic"):
print(key)
Typing of values
See serialization. Per default, serialization happens automatically with some heuristics, but can be manually controlled.
# strings
store.put("foo", "bar")
assert store.get("foo") == "bar"
# numbers
store.put("data", 1)
assert store.get("data") == 1
# json
store.put("data", {"foo": "bar"})
data = store.get("data")
assert data["foo"] == "bar"
Write data
Data can be written with the put
function or via a file-like handler.
Any existing data will be overwritten without warning.
# simple data put
store.put("key", "my content")
# use handler (for larger data streams)
with store.open("key", "wb") as fh:
fh.write(data)
Read data
Data can be read in different ways. Use get
for just returning the value, pop
for deleting the entry after reading, stream
for reading a data stream line by line or a file-like handler for reading data similar to pythons built-in open()
.
# simple data get
data = store.get("key")
# delete after reading (similar to redis GETDEL)
data = store.pop("key")
# stream line by line
for line in store.stream("key"):
print(line)
# use handler (for larger data streams)
with store.open("key", "rb") as fh:
data = fh.read()
Delete data
Just call the delete
function:
Handling of missing data
There are two ways to deal with missing data (a key
that doesn't exist in the store). Either fail silently (return None
) or raise an exception which is the default.
This behaviour can be configured globally or per function call:
from anystore.exceptions import DoesNotExist
# default behaviour with exception
try:
data = store.get("key")
except DoesNotExist:
data = "__missing__
# don't raise the exception
data = store.get("key", raise_on_nonexist=False)
Key content info
Obtain meta information about the content (value or actual file) stored at the given key. This contains the size
of the content (in bytes) and a created_at
and updated_at
timestamp. See Stats
.
Dive deeper
Read further for using anystore
as a cache backend or blob storage.