refactor(redis): 移除心跳日志长度限制和相关配置

移除Redis集成中对心跳日志和console日志的长度限制功能,包括:
1. 删除heartbeatTtlSeconds和consoleMaxLen配置项
2. 移除相关trim操作和测试用例
3. 简化RedisIntegration类中相关方法

同时为heartbeat_events表添加write_ts_ms字段记录写入时间
This commit is contained in:
2026-01-22 14:06:02 +08:00
parent b90faf4aa4
commit 1a505bfa29
5 changed files with 13 additions and 59 deletions

View File

@@ -16,8 +16,6 @@ export default {
url: 'redis://10.8.8.109:6379',
apiBaseUrl: `http://127.0.0.1:${env.PORT ?? 3001}`,
heartbeatIntervalMs: 3000,
heartbeatTtlSeconds: 30,
consoleMaxLen: null,
},
// Kafka配置

View File

@@ -84,6 +84,7 @@ class DatabaseManager {
guid varchar(32) NOT NULL DEFAULT replace(gen_random_uuid()::text, '-', ''),
ts_ms bigint NOT NULL,
write_ts_ms bigint DEFAULT (EXTRACT(EPOCH FROM clock_timestamp()) * 1000)::bigint,
hotel_id int2 NOT NULL,
room_id varchar(50) NOT NULL,
device_id varchar(64) NOT NULL,
@@ -130,6 +131,9 @@ class DatabaseManager {
)
PARTITION BY RANGE (ts_ms);
ALTER TABLE heartbeat.heartbeat_events ADD COLUMN IF NOT EXISTS write_ts_ms bigint;
ALTER TABLE heartbeat.heartbeat_events ALTER COLUMN write_ts_ms SET DEFAULT (EXTRACT(EPOCH FROM clock_timestamp()) * 1000)::bigint;
ALTER TABLE heartbeat.heartbeat_events ADD COLUMN IF NOT EXISTS elec_address text[];
ALTER TABLE heartbeat.heartbeat_events ADD COLUMN IF NOT EXISTS air_address text[];
ALTER TABLE heartbeat.heartbeat_events ADD COLUMN IF NOT EXISTS voltage double precision[];
@@ -396,6 +400,7 @@ class DatabaseManager {
const columns = [
'ts_ms',
'write_ts_ms',
'hotel_id',
'room_id',
'device_id',
@@ -427,6 +432,7 @@ class DatabaseManager {
const toRowValues = (e) => [
e.ts_ms,
e.write_ts_ms ?? Date.now(),
e.hotel_id,
e.room_id,
e.device_id,

View File

@@ -46,28 +46,6 @@ class RedisIntegration {
return Number.isFinite(ms) && ms > 0 ? ms : 3000;
}
getHeartbeatTtlSeconds() {
const ttl = this.config?.heartbeatTtlSeconds;
if (ttl === undefined || ttl === null) return null;
const n = Number(ttl);
return Number.isFinite(n) && n > 0 ? Math.floor(n) : null;
}
getHeartbeatMaxLen() {
const v = this.config?.heartbeatMaxLen;
if (v === undefined) return 2000;
if (v === null) return null;
const n = Number(v);
return Number.isFinite(n) && n > 0 ? Math.floor(n) : null;
}
getConsoleMaxLen() {
const v = this.config?.consoleMaxLen;
if (v === undefined || v === null) return null;
const n = Number(v);
return Number.isFinite(n) && n > 0 ? Math.floor(n) : null;
}
async connect() {
if (!this.isEnabled()) {
console.log('[redis] disabled');
@@ -191,10 +169,6 @@ class RedisIntegration {
this._pendingHeartbeat = null;
await this.client.rPush(key, value);
const maxLen = this.getHeartbeatMaxLen();
if (maxLen) {
await this.client.lTrim(key, -maxLen, -1);
}
}
async writeHeartbeat() {
@@ -218,10 +192,6 @@ class RedisIntegration {
for (let attempt = 1; attempt <= 2; attempt += 1) {
try {
await this.client.rPush(key, value);
const maxLen = this.getHeartbeatMaxLen();
if (maxLen) {
await this.client.lTrim(key, -maxLen, -1);
}
this._pendingHeartbeat = null;
return;
} catch (err) {
@@ -277,11 +247,6 @@ class RedisIntegration {
while (this._pendingConsoleLogs.length) {
const batch = this._pendingConsoleLogs.splice(0, 200);
await this.client.rPush(key, ...batch);
const maxLen = this.getConsoleMaxLen();
if (maxLen) {
await this.client.lTrim(key, -maxLen, -1);
}
}
} finally {
this._flushingConsoleLogs = false;
@@ -325,12 +290,6 @@ class RedisIntegration {
const key = this.getConsoleKey();
await this.client.rPush(key, value);
const maxLen = this.getConsoleMaxLen();
if (maxLen) {
// 保留最新 maxLen 条
await this.client.lTrim(key, -maxLen, -1);
}
}
info(message, metadata) {