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.