快速开始
安装(推荐)
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/lancedbSDK,它增加了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 S3 | s3://bucket-name |
| Cloudflare R2 | https://account.r2.cloudflarestorage.com/bucket |
| Google GCS | gs://bucket-name |
| Azure Blob | az://container-name |