From 58840e2c00349d937ee6e83cb968845081662c11 Mon Sep 17 00:00:00 2001 From: Edmund Huggett Date: Wed, 15 Nov 2017 12:31:22 +0000 Subject: [PATCH] use redis expire event to delete stored data immediately --- server/config.js | 5 +++++ server/storage.js | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/server/config.js b/server/config.js index e3e97b2a..ce2504bc 100644 --- a/server/config.js +++ b/server/config.js @@ -14,6 +14,11 @@ const conf = convict({ default: 'localhost', env: 'REDIS_HOST' }, + redis_event_expire: { + format: Boolean, + default: false, + env: 'REDIS_EVENT_EXPIRE' + }, listen_port: { format: 'port', default: 1443, diff --git a/server/storage.js b/server/storage.js index 13bfeb47..27647032 100644 --- a/server/storage.js +++ b/server/storage.js @@ -61,6 +61,20 @@ if (config.s3_bucket) { }; } +if (config.redis_event_expire) { + const forceDelete = config.s3_bucket ? awsForceDelete : localForceDelete; + const redis_sub = redis_client.duplicate(); + const subKey = '__keyevent@0__:expired'; + redis_sub.psubscribe(subKey, function() { + log.info('Redis:', 'subscribed to expired key events'); + }); + + redis_sub.on('pmessage', function(channel, message, id) { + log.info('RedisExpired:', id); + forceDelete(id); + }); +} + function flushall() { redis_client.flushdb(); }