Skip to content

TCP Protocol

Tổng quan

Distributed cache sử dụng protocol TCP dựa trên text đơn giản, tương tự Redis. Các lệnh được gửi dưới dạng chuỗi với delimiter \r\n.

Client ─── SET key value\r\n ───→ Server
Client ←── OK\r\n ────────────── Server

Các lệnh

LệnhCú phápResponseMô tả
SETSET key value [ttl]OKLưu key-value pair
GETGET keyVALUE data hoặc NULLLấy value
DELDEL keyOK hoặc NULLXóa key
PINGPINGPONGKiểm tra sức khỏe
REPLICATEREPLICATE key valueOKSao chép dữ liệu sang node
ELECTELECT nodeIdOKLeader election

Wire Format

# Định dạng request
COMMAND key value ttl\r\n

# Định dạng response
STATUS data\r\n

Ví dụ

# Lưu giá trị
SET user:123 {"name":"John","email":"john@example.com"}\r\n
→ OK\r\n

# Lấy giá trị
GET user:123\r\n
→ VALUE {"name":"John","email":"john@example.com"}\r\n

# Xóa key
DEL user:123\r\n
→ OK\r\n

# Kiểm tra sức khỏe
PING\r\n
→ PONG\r\n

Xử lý lỗi

# Lệnh không xác định
INVALID_CMD\r\n
→ ERR Unknown command\r\n

# Key không tồn tại
GET nonexistent\r\n
→ NULL\r\n

Sử dụng với CacheClient

typescript
import { CacheClient } from "distributed-cache";

const client = new CacheClient({
  host: "127.0.0.1",
  port: 3000,
  retryAttempts: 3,
  retryDelay: 1000,
  timeout: 5000,
});

await client.connect();

// SET
await client.set("user:123", { name: "John" });
await client.set("temp:data", "value", 5000); // với TTL

// GET
const user = await client.get("user:123");
console.log(user); // { name: "John" }

// DELETE
const deleted = await client.del("user:123");
console.log(deleted); // true

// PING
const alive = await client.ping();
console.log(alive); // true

await client.disconnect();

Cấu hình Client

Tuỳ chọnKiểuMặc địnhMô tả
hoststring"127.0.0.1"Hostname server
portnumber3000Port server
retryAttemptsnumber3Số lần thử lại khi lỗi
retryDelaynumber1000Delay giữa các lần thử (ms)
timeoutnumber5000Timeout request (ms)

Released under the MIT License.