ZnSocket - Redis-like Key-Value Store in Python
ZnSocket provides a Redis-compatible API using python-socketio and Python objects for storage. It is designed for testing and applications requiring key-value storage while being easily installable via pip
. For production, consider using redis-py and a Redis instance.
[!IMPORTANT]
ZnSocket is not designed for large data.
The maximum size for a single communication is 100 MB.
Although this value can be adapted, you will notice slow data transfers for large files.
Installation
To install ZnSocket, use:
pip install znsocket
Example
Start the ZnSocket server using the CLI:
znsocket --port 5000
For additional options, run:
znsocket --help
Here's a simple example of how to use the ZnSocket client:
from znsocket import Client
c = Client.from_url("znsocket://127.0.0.1:5000")
c.set("name", "Fabian")
assert c.get("name") == "Fabian"
[!NOTE]
ZnSocket does not encode/decode strings. Using it is equivalent to using Redis.from_url(storage, decode_responses=True)
in the Redis client.
Lists
ZnSocket provides a synchronized version of the Python list
implementation. Unlike a regular Python list, the data in znsocket.List
is not stored locally; instead, it is dynamically pushed to and pulled from the server.
Below is a step-by-step example of how to use znsocket.List
to interact with a ZnSocket server.
from znsocket import Client, List
client = Client.from_url("znsocket://127.0.0.1:5000")
sync_list = List(r=client, key="list:1")
sync_list.extend(["a", "b", "c", "d"])
print(sync_list[::2])
Dicts
ZnSocket provides a synchronized version of the Python dict
implementation similar to the list
implementation.
Below is a step-by-step example of how to use znsocket.Dict
to interact with a ZnSocket server.
from znsocket import Client, Dict
client = Client.from_url("znsocket://127.0.0.1:5000")
sync_dict = Dict(r=client, key="dict:1")
sync_dict["Hello"] = "World"
print(sync_dict["Hello"])