pgmemcache
memcached interface
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
pgmemcache | 2.3.0 | SIM | MIT | C |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 9410 | pgmemcache | No | Yes | No | Yes | No | Yes | - |
| Related | redis_fdw redis spat mongo_fdw kafka_fdw documentdb documentdb_core documentdb_distributed |
|---|
missing pg12-14 on el.aarch64
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PGDG | 2.3.0 | 1817161514 | pgmemcache | - |
| RPM | PGDG | 2.3.0 | 1817161514 | pgmemcache_$v | - |
| DEB | PGDG | 2.3.0 | 1817161514 | postgresql-$v-pgmemcache | - |
Install
You can install pgmemcache directly. First, make sure the PGDG repository is added and enabled:
pig repo add pgdg -u # Add PGDG repo and update cache
Install the extension using pig or apt/yum/dnf:
pig install pgmemcache; # Install for current active PG version
pig ext install -y pgmemcache -v 18 # PG 18
pig ext install -y pgmemcache -v 17 # PG 17
pig ext install -y pgmemcache -v 16 # PG 16
pig ext install -y pgmemcache -v 15 # PG 15
pig ext install -y pgmemcache -v 14 # PG 14
dnf install -y pgmemcache_18 # PG 18
dnf install -y pgmemcache_17 # PG 17
dnf install -y pgmemcache_16 # PG 16
dnf install -y pgmemcache_15 # PG 15
dnf install -y pgmemcache_14 # PG 14
apt install -y postgresql-18-pgmemcache # PG 18
apt install -y postgresql-17-pgmemcache # PG 17
apt install -y postgresql-16-pgmemcache # PG 16
apt install -y postgresql-15-pgmemcache # PG 15
apt install -y postgresql-14-pgmemcache # PG 14
Create Extension:
CREATE EXTENSION pgmemcache;
Usage
Provides PostgreSQL user-defined functions for interacting with memcached servers.
Enabling
CREATE EXTENSION pgmemcache;
Configure default servers in postgresql.conf:
shared_preload_libraries = 'pgmemcache'
pgmemcache.default_servers = 'localhost:11211'
pgmemcache.default_behavior = 'DEAD_TIMEOUT:2'
Server Management
SELECT memcache_server_add('localhost:11211');
SELECT memcache_server_add('cache-host'); -- uses default port 11211
Setting and Getting Values
-- Set a key (overwrites if exists)
SELECT memcache_set('user:1:name', 'John Doe');
SELECT memcache_set('session:abc', 'data', now() + interval '1 hour');
-- Add a key (fails if exists)
SELECT memcache_add('user:2:name', 'Jane Doe');
SELECT memcache_add('temp_key', 'value', interval '5 minutes');
-- Replace (fails if key doesn't exist)
SELECT memcache_replace('user:1:name', 'John Smith');
-- Get a value
SELECT memcache_get('user:1:name'); -- returns text or NULL
-- Get multiple values
SELECT key, value FROM memcache_get_multi('{key1,key2,key3}'::text[]);
Atomic Counters
SELECT memcache_incr('counter'); -- increment by 1
SELECT memcache_incr('counter', 5); -- increment by 5
SELECT memcache_decr('counter'); -- decrement by 1
SELECT memcache_decr('counter', 3); -- decrement by 3
Deleting and Flushing
SELECT memcache_delete('user:1:name');
SELECT memcache_flush_all(); -- flush all servers
Statistics
SELECT memcache_stats(); -- returns stats from all servers
Trigger Example
Invalidate cache on table updates:
CREATE OR REPLACE FUNCTION auth_passwd_upd()
RETURNS TRIGGER LANGUAGE plpgsql AS $$
BEGIN
IF OLD.passwd <> NEW.passwd THEN
PERFORM memcache_delete('user_id_' || NEW.user_id || '_password');
END IF;
RETURN NEW;
END;
$$;
CREATE TRIGGER auth_passwd_upd_trg AFTER UPDATE ON passwd
FOR EACH ROW EXECUTE PROCEDURE auth_passwd_upd();
Feedback
Was this page helpful?
Thanks for the feedback! Please let us know how we can improve.
Sorry to hear that. Please let us know how we can improve.