Replacing Redis with Postgres as a Key-Value Store

Featured Image
PostgreSQL, known for its robustness and ACID compliance, can also function as an efficient key-value store, potentially replacing Redis in certain scenarios. While Redis excels as an in-memory cache with ultra-fast read/write operations, Postgres offers persistence, complex querying, and reduced infrastructure overhead.

How to Use Postgres as a Key-Value Store

1. Unlogged Tables for Faster Writes

CREATE UNLOGGED TABLE key_value_store (
key TEXT PRIMARY KEY,
value JSONB,
expires_at TIMESTAMP
);

Unlogged tables skip Write-Ahead Logging (WAL), improving write performance.

2. TTL (Time-To-Live) Implementation

DELETE FROM key_value_store WHERE expires_at < NOW();

Run this periodically or as part of your application logic.

3. Indexing for Faster Lookups

CREATE INDEX idx_key_value_store_key ON key_value_store (key);

4. Optimizing Performance

ALTER SYSTEM SET shared_buffers = '4GB'; -- Adjust based on RAM
ALTER SYSTEM SET effective_cache_size = '12GB';

You Should Know:

  • Benchmarking Postgres vs. Redis
  • Redis: ~100,000+ ops/sec (in-memory)
  • Postgres: ~10,000-50,000 ops/sec (disk-based, with optimizations)
  • When to Use Postgres Instead of Redis?
  • When you need persistence + caching in a single system.
  • When simplifying infrastructure (no separate Redis instance).
  • When ACID transactions are required alongside caching.

  • When to Stick with Redis?

  • Ultra-low latency requirements (microseconds matter).
  • Pub/Sub, Lua scripting, or atomic operations are needed.
  • High-frequency writes where disk I/O becomes a bottleneck.

Practical Commands for Testing

  • Redis Benchmark:
    redis-benchmark -t set,get -n 100000 -q
    
  • Postgres Benchmark (using pgbench):
    pgbench -c 10 -j 2 -t 1000 -f test_script.sql
    

What Undercode Say:

Postgres is versatile, but it’s not a drop-in replacement for Redis. If your workload involves high-speed caching with frequent evictions, Redis (or Valkey, a Redis fork) remains superior. However, for simpler architectures where reducing moving parts is a priority, Postgres can be a viable alternative.

Expected Output:

A hybrid approach might work best—using Postgres for persistent data and Redis for high-speed caching—depending on the use case.

Prediction:

As Postgres continues to improve its in-memory and caching capabilities, we may see more developers adopting it for lightweight caching, especially in smaller-scale applications where infrastructure simplicity is valued over raw speed.

References:

Reported By: Milan Jovanovic – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅

Join Our Cyber World:

💬 Whatsapp | 💬 Telegram