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:
46
seasoned_api/src/cache/redis.js
vendored
Normal file
46
seasoned_api/src/cache/redis.js
vendored
Normal 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;
|
||||
Reference in New Issue
Block a user