You have to install Redis, Another Redis Desktop Manager and NPM Redis for this example.
Install Redis on Linux
Install Redis on Window
Install free version Another Redis Desktop Manager to view the cache data.
Install NPM Redis
npm install redis
This is how you connect redis in NodeJS:
const redis = require('redis')
const redisURL = 'redis://127.0.0.1:6379'
const client = redis.createClient(redisURL)
For basic value, you can use set and get method. The first parameter is the search key and second parameter value stored.
// Store 'hi' as search key, and value is 'there'.
client.set('hi','there');
// Output: there
client.get('hi', ( err, val) => { console.log(val) } )
Redis support hset where you can have 2 search keys. Generally, I think it is practical to use hset for mongodb where the search keys are collection name and search query.
You may refer example on CRUD in StudentController:
Create - http://localhost/api/student
- When there is new document, delete collection in the cache.
redisClient.del(StudentModel.collection.collectionName)
Read - http://localhost/api/student/6028c376ddf84b2bd0a6b6b3
- If there is cache data, return cache data.
const cacheStudent = await redisClient.hget(
StudentModel.collection.collectionName,
JSON.stringify(query.getQuery())
)
if (cacheStudent) {
// Remember convert to javascript object
console.log('Get from cache.')
return res.json(JSON.parse(cacheStudent));
}
- If not, find the data in mongodb, store the data to redis and return the data.
const student = await query.exec();
redisClient.hset(
StudentModel.collection.collectionName,
JSON.stringify(query.getQuery()),
JSON.stringify(student.toObject({ getters: false }))
)
Update - http://localhost/api/student/6028c376ddf84b2bd0a6b6b3
- Same as create, delete the collection.
Delete - http://localhost/api/student/6028c376ddf84b2bd0a6b6b3
- Same as create, delete the collection.
The above is an example using collection as key. The different requirement may use different key.
No comments:
Post a Comment