I Replaced Redis with PostgreSQL (And It's Faster)
I Replaced Redis with PostgreSQL (And It’s Faster) 在更改之前,Redis 主要處理三件事: 快取(佔使用量的 70%) 發布/訂閱(佔使用量的 20%) 後台作業佇列(使用率 10%) 痛點:
需要備份兩個資料庫 Redis 使用記憶體(規模化時成本很高) Redis 持久化機制…很複雜。 Postgres 和 Redis 之間的網路跳躍 PostgreSQL 功能 1: 使用未記錄表進行快取 Redis
await redis.set("session:abc123", JSON.stringify(sessionData), "EX", 3600); PostgreSQL
CREATE UNLOGGED TABLE cache ( key TEXT PRIMARY KEY, value JSONB NOT NULL, expires_at TIMESTAMPTZ NOT NULL ); CREATE INDEX idx_cache_expires ON cache(expires_at); Insert
INSERT INTO cache (key, value, expires_at) VALUES ($1, $2, NOW() + INTERVAL '1 hour') ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, expires_at = EXCLUDED.expires_at; Read
SELECT value FROM cache WHERE key = $1 AND expires_at > NOW(); Cleanup (run periodically)