8 releases
0.3.0 | Apr 9, 2019 |
---|---|
0.2.0 | Apr 8, 2019 |
0.1.5 | Apr 8, 2019 |
#8 in #reliability
22 downloads per month
Used in yocto_client
21KB
487 lines
yocto
Yocto is a minimalistic key-value store built for fast and reliable state exchange between applications. It's written with an emphasis on reliability, speed and ease-to-use.
Features
- Uses a concurrent hash map as main data structure to allow multiple threads. Blocks only if the same bucket is accessed by at least one write operation.
- Allows
get
,insert
,remove
andclear
operations. More to come. - Can be deployed seamlessly with Docker.
Usage
You can use yocto either via Docker, by building it from source or programmatically via a crate.
Docker
In the below snipped, replace <host_port>
with the port you want yocto to bind to:
docker run -p <host_port>:7001 alebeck/yocto
Following environment variables can be passed:
YOCTO_THREADS
: Number of threads, defaults to4
YOCTO_BIND
: IP address and port to bind to inside the docker image, defaults to0.0.0.0:7001
YOCTO_VERBOSE
: Show debug logs, defaultfalse
Example usage:
docker run -p 7001:7001 --env YOCTO_THREADS=2 alebeck/yocto
Build from source
Pull the repository and execute
cargo test -- --test-threads=1
cargo build --release
cargo install
Via crates.io
Add yocto to your dependencies and use it like that:
use yocto::args::Config;
let config = Config {
threads: 1,
iface: "127.0.0.1:7001".to_string(),
log_level: log::LogLevelFilter::Error // requires log = "0.3.0"
};
yocto::run(config);
Dependencies
~2.5MB
~36K SLoC