Quick start: from download to your first keys
Download Minimal or Standard, start Lavik from its extracted directory, and connect with redis-cli. No service setup required.
Pinned release: v0.1.0-beta.1
Use Linux 6.1+ with usable io_uring and Ubuntu 24.04-compatible glibc. On macOS or Windows, run the package in a Linux VM meeting these requirements; the Linux binaries do not run directly on macOS.
All packages, SHA-256 checksums, and platform requirements →
1. Choose and download a package
Minimal is the simplest starting point: kernel TCP and io_uring storage, without SPDK / DPDK.
Install the client and dependencies (Ubuntu 24.04)
sudo apt-get update &&
sudo apt-get install -y ca-certificates curl redis-toolsDownload, verify, and enter the package directory
Run this in a Bash terminal. The commands stop if a checksum check fails. If you already extracted this package from the Download page, enter the directory shown below.
curl -fLO --retry 3 https://github.com/eloqdata/lavik/releases/download/v0.1.0-beta.1/lavik-v0.1.0-beta.1-linux-x86_64-minimal.tar.gz &&
curl -fLO --retry 3 https://github.com/eloqdata/lavik/releases/download/v0.1.0-beta.1/lavik-v0.1.0-beta.1-linux-x86_64-minimal.tar.gz.sha256 &&
sha256sum -c lavik-v0.1.0-beta.1-linux-x86_64-minimal.tar.gz.sha256 &&
tar -xzf lavik-v0.1.0-beta.1-linux-x86_64-minimal.tar.gz &&
cd lavik-v0.1.0-beta.1-linux-x86_64-minimal &&
./lavik --versionYour current directory should now be: lavik-v0.1.0-beta.1-linux-x86_64-minimal
Expect lavik 0.1.0-beta.1. Keep this terminal in that directory for the startup step below.
Planning to use Standard with SPDK storage?
Start with the file-backed example below to verify your client connection. Both packages use kernel TCP / io_uring in this example.
SPDK requires a separately provisioned NVMe namespace, IOMMU / VFIO, hugepages, and sufficient locked-memory limits. Standard supports --storage=spdk with spdk://PCI_BDF/NSID data paths instead of a regular file. You can keep kernel TCP networking while using SPDK storage; DPDK networking is optional.
Use an empty device dedicated to Lavik: rebinding changes kernel access to that device, and starting the database writes to it.
SPDK backend selection and runtime requirements for this release ↗2. Start and connect
The same startup script works with Minimal and Standard. It uses kernel TCP / io_uring, a disposable 512 MiB file, and the loopback address 127.0.0.1:6379. The two workers each have a 64 MiB registered-buffer budget. Leave this terminal running while you connect from a second terminal.
Your first keys
Install the selected Linux package and redis-cli first (on Ubuntu/Debian: sudo apt-get install redis-tools). Works with Minimal and Standard. In terminal 1, change into the extracted package directory containing ./lavik, then paste this Bash script. Keep it running; use terminal 2 for the client commands. Starting Lavik requires no PATH change, root privileges, or systemd service.
set -euo pipefail
if [ ! -x ./lavik ]; then
echo "Run this from the extracted Lavik package directory (the folder containing ./lavik)." >&2
exit 1
fi
mkdir -p /tmp/lavik-example
if [ ! -e /tmp/lavik-example/data ]; then
fallocate -l 512M /tmp/lavik-example/data
fi
./lavik --bind 127.0.0.1 --port 6379 --metrics-port 0 \
--network kernel --storage uring \
--threads 2 --no-pin-workers --registered-buffer-mb-per-worker 64 \
--shutdown-checkpoint --data-file /tmp/lavik-example/data \
--log-dir /tmp/lavik-example/logs$ redis-cli -h 127.0.0.1 -p 6379 --raw PING
PONG
$ redis-cli -h 127.0.0.1 -p 6379 --raw SET greeting 'hello from Lavik'
OK
$ redis-cli -h 127.0.0.1 -p 6379 --raw GET greeting
hello from Lavik
$ redis-cli -h 127.0.0.1 -p 6379 --raw HSET user:42 name Ada
1
$ redis-cli -h 127.0.0.1 -p 6379 --raw HGET user:42 name
Ada3. Stop and restart
Press Ctrl-C in the server terminal to stop Lavik. To restart, run the same startup script from the same extracted package directory. The script keeps the existing data file instead of allocating it again. The example uses /tmp/lavik-example for disposable data; /tmp can be cleared by the operating system. Choose persistent storage before storing anything you need to keep.
Why ./lavik, rather than lavik?
Extracting an archive does not add its folder to your shell’s PATH. ./lavik explicitly runs the binary in the current directory. A systemd service is optional process management; it does not fix command lookup. Keep using ./lavik here. For an eventual service, use an absolute executable path and a persistent data location rather than this demo directory.
If startup fails
If ./lavik is not found, return to the extracted directory shown in step 1. A GLIBC or shared-library error usually means the OS runtime or Standard dependencies do not match the package requirements. io_uring initialization errors require checking the Linux kernel and sandbox restrictions. If port 6379 is in use, stop your own conflicting demo or choose another port for both the server and redis-cli.
What was actually verified
The displayed startup script and client commands are executed against the exact beta package in Linux Docker, starting in the extracted binary directory with no Lavik entry on PATH. The verification also checks a separate value after a graceful shutdown and restart. The package checks cover Minimal and Standard using kernel TCP / io_uring. They do not exercise an SPDK NVMe device, measure performance, or simulate power loss.
A successful write response is not a synchronous fsync fence. Evaluate durability, replication, and recovery requirements for your workload.