Java SDK
Java SDK 通过 JNA 加载 libtalon.dylib/.so。
安装
Java SDK 暂未发布到 Maven Central,需从源码构建:
bash
git clone https://github.com/darkmice/talon-sdk.git
cd talon-sdk/java
mvn installWARNING
构建前需确保 lib/ 目录包含对应平台的 native library(由 CI 自动推送,或从 GitHub Releases 手动下载)。
库查找
SDK 自动从以下位置查找原生库:
TALON_LIB_PATH环境变量- Classpath 资源(如内嵌于 JAR 中)
TALON_SDK_ROOT环境变量 →lib/{platform}/- 从 JAR/class 位置向上遍历查找
lib/目录
快速开始
java
import io.talon.Talon;
try (Talon db = new Talon("./data")) {
var result = db.sql("SELECT 1 + 1 AS result");
}API 速查
SQL
java
db.sql("CREATE TABLE users (id INT, name TEXT)");KV
java
db.kvSet("key", "value", null);
String val = db.kvGet("key");
db.kvSetNx("lock", "1", 30L);
long newVal = db.kvIncrBy("counter", 10);
newVal = db.kvDecrBy("counter", 5);
var keys = db.kvKeysLimit("user:", 0, 100);
long count = db.kvCount();FTS(全文搜索)
java
db.ftsCreateIndex("articles");
db.ftsIndex("articles", "doc1", Map.of("title", "Hello World"));
var hits = db.ftsSearch("articles", "hello", 10);
var fuzzy = db.ftsSearchFuzzy("articles", "helo", 2, 10);
var hybrid = db.ftsHybridSearch("articles", "vecs", "query", vec,
Map.of("fts_weight", 0.7, "vec_weight", 0.3));Geo(地理空间)
java
db.geoCreate("shops");
db.geoAdd("shops", "starbucks", 121.47, 31.23);
var nearby = db.geoSearch("shops", 121.47, 31.23, 1000, "m", null);
var inside = db.geoFence("shops", "starbucks", 121.47, 31.23, 500, "m");
String[] members = db.geoMembers("shops");Graph(图引擎)
java
db.graphCreate("social");
long v1 = db.graphAddVertex("social", "person", Map.of("name", "Alice"));
long v2 = db.graphAddVertex("social", "person", Map.of("name", "Bob"));
db.graphAddEdge("social", v1, v2, "knows", null);
var path = db.graphShortestPath("social", v1, v2, 10);
var pagerank = db.graphPagerank("social", 0.85, 20, 10);AI(Session / Context / Memory / Trace)
java
db.aiCreateSession("s1", null, null);
db.aiAppendMessage("s1", Map.of("role", "user", "content", "hi"));
var history = db.aiGetHistory("s1", null);
db.aiStoreMemory("s1", Map.of("key", "pref", "value", "dark"));Vector / TS / MQ / Backup / Ops
java
db.vectorInsert("idx", 1, new float[]{0.1f, 0.2f});
db.tsInsert("metrics", Map.of("cpu", 85.5));
db.mqPublish("events", Map.of("type", "login"));
db.exportDb("/backup", null);
db.persist();