快速开始

安装(推荐)

curl -fsSL https://raw.githubusercontent.com/duanfuxiang0/lanbuffer-release/main/install.sh | bash

安装指定版本:

curl -fsSL https://raw.githubusercontent.com/duanfuxiang0/lanbuffer-release/main/install.sh | bash -s -- --version vX.Y.Z

卸载:

curl -fsSL https://raw.githubusercontent.com/duanfuxiang0/lanbuffer-release/main/install.sh | bash -s -- --uninstall

配置

安装脚本会自动在 ~/.config/lanbuffer/ 下生成默认配置文件和 .env 模板。

也可以手动生成:

lanbuffer init

编辑 ~/.config/lanbuffer/.env,填入你的凭证:

# 必填
LANBUFFER_PASSWORD=your_encryption_password
STORAGE_URL=s3://your-bucket/lanbuffer-data

# AWS / S3 兼容凭证
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key

可选:检查 ~/.config/lanbuffer/lanbuffer.toml,默认配置适用于大多数场景。

示例 lanbuffer.toml

[cache]
dir = "${HOME}/.cache/lanbuffer"
disk_size_gb = 10.0
memory_size_gb = 1.0

[storage]
url = "${STORAGE_URL}"
encryption_password = "${LANBUFFER_PASSWORD}"

[filesystem]
compression = "lz4"

[servers.nfs]
addresses = ["127.0.0.1:2049"]

[servers.table]
addresses = ["127.0.0.1:7001"]

[servers.kv]
addresses = ["127.0.0.1:7002"]

[aws]
access_key_id = "${AWS_ACCESS_KEY_ID}"
secret_access_key = "${AWS_SECRET_ACCESS_KEY}"

运行

lanbuffer run

配置文件会自动从 ./lanbuffer.toml~/.config/lanbuffer/lanbuffer.toml 查找。 同目录下的 .env 文件会自动加载。

也可以显式指定路径:

lanbuffer run -c /path/to/lanbuffer.toml --env-file /path/to/.env

使用示例

Table API(类 LanceDB)

LanBuffer 提供兼容 LanceDB 的 Table API,支持结构化数据存储和向量搜索。

注意: 上游 LanceDB 官方 SDK 与 LanBuffer 不兼容。请使用本仓库中修改的 @lancedb/lancedb SDK,它增加了 lanbuff:// 协议支持。需要从源码构建:

cd nodejs && npm install && npm run build
import * as lancedb from "@lancedb/lancedb";

// 通过 lanbuff:// 协议连接 LanBuffer Table API
const db = await lancedb.connect("lanbuff://127.0.0.1:7001");

// 创建表
const tbl = await db.createTable(
  "items",
  [
    { vector: [3.1, 4.1], item: "foo", price: 10.0 },
    { vector: [5.9, 26.5], item: "bar", price: 20.0 },
  ],
  { mode: "overwrite" },
);

// 向量搜索
const results = await tbl.search([3.0, 4.0]).limit(5).toArray();
console.log(results);

// 添加数据
await tbl.add([
  { vector: [1.3, 1.4], item: "fizz", price: 100.0 },
]);

// SQL 过滤
const filtered = await tbl
  .search([3.0, 4.0])
  .where("price < 50")
  .limit(10)
  .toArray();

// 列出所有表
const tables = await db.tableNames();
console.log(tables);

// 删除表
await db.dropTable("items");

也可以直接通过 HTTP 验证 Table API:

# 健康检查
curl http://127.0.0.1:7001/health

# 列出所有表
curl http://127.0.0.1:7001/v1/table

KV API

# 写入值
curl -X PUT http://127.0.0.1:7002/kv/v1/keys/hello -d 'world'

# 读取值
curl http://127.0.0.1:7002/kv/v1/keys/hello

# 前缀扫描
curl "http://127.0.0.1:7002/kv/v1/keys?prefix=user:&limit=10"

NFS 挂载

sudo mount -t nfs -o port=2049,mountport=2049,nfsvers=3,tcp 127.0.0.1:/ /mnt/lanbuffer

从源码构建

cargo build --release -p lanbuffer

支持的后端

后端URL 格式
AWS S3s3://bucket-name
Cloudflare R2https://account.r2.cloudflarestorage.com/bucket
Google GCSgs://bucket-name
Azure Blobaz://container-name