快速开始:下载并运行第一组命令

下载 Minimal 或 Standard,从解压目录启动 Lavik,再使用 redis-cli 连接。无需先配置系统服务。

查看发布包与校验和 ↗

当前固定版本: v0.1.0-beta.1

使用 Linux 6.1+,确保 io_uring 可用,并使用兼容 Ubuntu 24.04 的 glibc。macOS 和 Windows 用户请在满足这些条件的 Linux 虚拟机中运行;发布包不能直接在 macOS 上执行。

查看所有发布包、SHA-256 校验和及平台要求 →

1. 选择并下载软件包

Minimal 是最简单的入门选择,使用内核 TCP 和 io_uring 存储,不包含 SPDK / DPDK。

安装客户端和运行依赖(Ubuntu 24.04)

Linux · bash
sudo apt-get update &&
sudo apt-get install -y ca-certificates curl redis-tools

下载、校验并进入软件包目录

在 Bash 终端中执行。校验失败时,后续命令不会执行。如果已从下载页解压此包,只需进入下方目录。

Linux · bash
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 --version

当前目录应为: lavik-v0.1.0-beta.1-linux-x86_64-minimal

版本输出应为 lavik 0.1.0-beta.1。保持这个终端位于该目录,继续下面的启动步骤。

准备使用 Standard 的 SPDK 存储?

先用下方文件式示例验证客户端连接。Minimal 和 Standard 在这个示例中都使用内核 TCP / io_uring。

SPDK 需要独立配置的 NVMe 命名空间、IOMMU / VFIO、hugepages 和足够的 memlock 限额。Standard 支持 --storage=spdk,数据路径使用 spdk://PCI_BDF/NSID,而不是普通文件。SPDK 存储可以继续使用内核 TCP,无需同时启用 DPDK 网络。

仅使用专门用于 Lavik 的空设备:设备解绑会影响内核对该设备的访问,启动数据库会写入数据。

查看此版本的 SPDK 后端选择与运行要求 ↗

2. 启动并连接

下面的启动脚本同时适用于 Minimal 和 Standard,使用内核 TCP / io_uring、可丢弃的 512 MiB 文件及回环地址 127.0.0.1:6379。两个工作线程各使用 64 MiB 注册缓冲区预算。保持此终端运行,再从第二个终端连接。

读写第一组键

先安装所选 Linux 软件包和 redis-cli(Ubuntu/Debian:sudo apt-get install redis-tools)。适用于 Minimal 和 Standard。在终端 1 进入解压后包含 ./lavik 的软件包目录,再粘贴下面的 Bash 脚本并保持运行。在终端 2 执行客户端命令。启动 Lavik 无需修改 PATH、使用 root 权限或配置 systemd 服务。

终端 1 · 启动服务器
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
终端 2 · 命令与预期结果
$ 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
Ada

3. 停止与重启

在服务器终端按 Ctrl-C 停止 Lavik。重启时,在相同的软件包目录再次执行启动脚本。脚本会保留已有数据文件,不会重复分配。示例使用 /tmp/lavik-example 保存可丢弃数据,操作系统可能清理 /tmp;需要保留的数据应放在持久存储中。

为什么要用 ./lavik?

解压软件包不会把该目录加入 shell 的 PATH。./lavik 明确运行当前目录中的二进制文件。systemd 用于管理服务进程,并不能解决命令路径查找。此处直接使用 ./lavik 即可;以后配置系统服务时,应使用可执行文件的绝对路径和持久数据目录,而不是这个演示目录。

启动失败时

如果找不到 ./lavik,请回到步骤 1 显示的解压目录。GLIBC 或共享库错误通常表示系统运行库或 Standard 依赖不满足软件包要求。io_uring 初始化错误需要检查 Linux 内核和沙箱限制。如果 6379 端口已占用,请停止自己的冲突演示实例,或同时修改服务器和 redis-cli 的端口。

实际验证了什么

显示的启动脚本和客户端命令在 Linux Docker 中使用确切 beta 软件包执行,起点为包含二进制文件的目录,PATH 中没有 Lavik。验证还检查额外写入的值能否在正常关闭并重启后保留。软件包检查覆盖 Minimal 和 Standard 的内核 TCP / io_uring 路径,不包含 SPDK NVMe 设备测试、性能测量或断电模拟。

写入成功的响应并不代表同步 fsync 已完成。请按实际工作负载评估持久性、复制和恢复要求。