Redis cache script with get and set functions.

This replaces old way of caching to sqlite. Still have same
functionality, so users of old cache functions just need to rename their
import.
This commit is contained in:
2020-02-21 18:11:39 +01:00
parent 91f64e5cfb
commit f37786aa76

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;