Feat: Redis cache #129

Merged
KevinMidboe merged 14 commits from feat/redis-cache into master 2020-04-08 21:04:07 +00:00
Showing only changes of commit f37786aa76 - Show all commits

46
seasoned_api/src/cache/redis.js vendored Normal file
View File

@@ -0,0 +1,46 @@
const redis = require("redis")
const client = redis.createClient()
class Cache {
/**
* Retrieve an unexpired cache entry by key.
* @param {String} key of the cache entry
* @returns {Promise}
*/
get(key) {
return new Promise((resolve, reject) => {
client.get(key, (error, reply) => {
if (reply == null) {
reject()
}
resolve(JSON.parse(reply))
})
})
}
/**
* Insert cache entry with key and value.
* @param {String} key of the cache entry
* @param {String} value of the cache entry
* @param {Number} timeToLive the number of seconds before entry expires
* @returns {Object}
*/
set(key, value, timeToLive = 10800) {
const json = JSON.stringify(value);
client.set(key, json, (error, reply) => {
if (reply == 'OK') {
// successfully set value with key, now set TTL for key
client.expire(key, timeToLive, (e) => {
if (e)
console.error('Unexpected error while setting expiration for key:', key, '. Error:', error)
})
}
})
return value
}
}
module.exports = Cache;