API RESP authentifiée · PostgreSQL 14–18 · Open source
La version 3.1.0 utilise une capacité en octets pouvant contenir des millions de petites clés si le budget le permet. Elle ajoute des verrous partitionnés, des hits mono-clé sans allocation, un suivi des écritures moins coûteux et le report des misses pendant les verrous de relation. Guide de mise à niveau.
3.1.0 · build final c431bcc
210krequêtes/s · RESP MGET
Par cœur physique du serveur épinglé clés chaudes · 256 clients · Go/pgx
Valkey · io-threads=2N
91.5k req/s
SQL préparé
23.2k req/s
VM privées en 10 GbE · Xeon Gold 6354 · épinglé à un cœur physique. Sur un cœur, Valkey io-threads=1 a atteint 180k req/s avec le moins de CPU serveur par requête.Résultats, données brutes et conditions →
Un appel. Deux chemins de lecture.
Un hit éligible renvoie la ligne stockée. Un miss ou un contournement lit la table source. Vos requêtes SELECT ordinaires gardent leur chemin actuel.
RESP2 │ lectures par clé primaire
-- Attach your table once.SELECT local_cache.attach_table('public.items');
-- Read rows by primary key.
MGET CRUD:pglc_demo.public.items:{"id":42} CRUD:pglc_demo.public.items:{"id":7}
Authentifié et limité à 1 024 clés par requête. Les lignes absentes renvoient null.
Écritures ordinaires
INSERT, UPDATE et DELETE invalident les entrées concernées.
Capacité fixe
Allouez le cache de lignes partagé au démarrage de PostgreSQL.
Validation de la génération du fence et de la charge utile
Les lectures non éligibles utilisent la table source selon les règles de visibilité de PostgreSQL.
Lancez le même test. Avec chaque client.
Node.js et Go. SQL préparé et RESP MGET.
Un seul exécuteur utilise les mêmes clés, tailles de lots, nombres de connexions, durée et vérifications des résultats. Comparez le débit, la latence, ainsi que le CPU et la mémoire PostgreSQL sur votre machine.
Lectures répétées de lignes complètes par clé primaire.
Un petit ensemble chaud de lignes complètes.
READ COMMITTED sur un primaire inscriptible.
Une application capable d’utiliser RESP MGET authentifié.
Gardez le SQL ordinaire
Jointures, plages, agrégats ou résultats de requêtes arbitraires.
Tables avec RLS, partitionnées ou héritées.
Une base de données où vous ne pouvez pas installer d'extension native.
Charges de travail sans bénéfice mesuré.
Lancez une démo locale.
Clonez le dépôt et démarrez un serveur PostgreSQL éphémère avec des lignes d'exemple. Docker compile l'extension et garde la démo séparée de vos bases de données.
Git et Docker Compose sont requis
git clone https://github.com/profundium/pg_local_cache.git
cd pg_local_cache
docker compose -f examples/compose.yaml -f examples/compose.resp.yaml up --build --wait
Parcourez une course cache-aside où une ancienne lecture remplit une clé supprimée après le commit. Comprenez la validation des remplissages, les snapshots, le rollback et les caches locaux aux requêtes.
Concevez une comparaison équitable du cache de lignes PostgreSQL avec SQL préparé et RESP MGET. Distinguez lectures chaudes, misses, tailles de lots, écritures et coûts clients.
Remplacez les requêtes de clés primaires N+1 en conservant les ID dupliqués, l'ordre d'entrée, les positions NULL et les lignes absentes. Comparez ANY, WITH ORDINALITY et RESP MGET.
pg_local_cache 3.1.0 garde les lignes fréquentes en mémoire partagée PostgreSQL et les sert via RESP. Comparaison avec Valkey et SQL préparé, sans lignes obsolètes.
Non. PostgreSQL met en cache les pages de la base de données. Cette extension met séparément en cache des lignes complètes sérialisées par clé primaire. Consultez la comparaison des chemins de lecture.
Met-il en cache les requêtes SELECT ordinaires ?
Non. Seul RESP MGET authentifié utilise le cache de lignes partagé. Les requêtes existantes conservent leur parcours PostgreSQL normal.
Remplace-t-il Redis ?
Non. Le point de terminaison RESP2 est limité. Il n'y a ni ensemble général de commandes Redis, ni TTL, ni pub/sub, ni coordination distribuée. Comparez les chemins cache-aside PostgreSQL et Redis.
Comment vérifier les mises à jour et le rollback ?
Le guide d’invalidation explique le comportement des écritures. Le guide de mise à niveau couvre le passage de 3.0.0 à 3.1.0 ainsi que la migration antérieure depuis 2.x.