Zinc is a key-value store meant to be lightweight, easy-to-use and flexible.
It aims to provide a performant solution that runs efficiently on IoT devices and other systems such as servers with resource-constraints.
The following list of features is not set in stone. Things may change at any time, especially during early development.
- Event loop to listen for client connections
- Non-blocking, asynchronous
- Logging and telemetry
- Formatting layer(s)
- Storage layer
- Logger implementation using
tracing
+tracing-subscriber
, etc. - Maintain list of active connections
- Parse commands from clients
-
GET
: retrieve values from store -
SET
: set new key-value pairs from store -
DEL
: removes key-value pairs from store
-
- Watch channel for hot-reloading
- Optimize for single-core, resource constrained systems
- Support parallel processing through the use of an optional feature flag
- Command line argument parser
- Logging and telemetry
tracing
+tracing-subscriber
- Codec for bytes off the wire
-
encode
method -
decode
method
-
- Encryption with authentication (AEAD and HMAC) Note: independent of TLS
- Asymmetric encryption
- Symmetric encryption
- Key exchange algorithm
- HMAC to verify data has not been tampered with
- Task-handling queue
- Buffered channels (
mpsc
+spsc
) - FIFO scheme
- Optimized through use of proper concurrent data structures
- Buffered channels (
This software is licensed by the MIT License.