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