

Node.js & Redis Caching
source link: https://gist.github.com/bradtraversy/a9dedcdf4350fd417819ee6538482aae
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Node.js & Redis Caching · GitHub
Instantly share code, notes, and snippets.
I believe line 6 should be const REDIS_PORT = process.env.REDIS_PORT || 6379;
process.env.REDIS_PORT
instead of process.env.PORT
I believe line 6 should be
const REDIS_PORT = process.env.REDIS_PORT || 6379;
process.env.REDIS_PORT
instead ofprocess.env.PORT
That's true
You can also use console.time().
async function getRepos(req, res, next) {
try {
console.log('Fetching Data...');
const { username } = req.params;
console.time(`START time`);
const response = await fetch(`https://api.github.com/users/${username}`);
const data = await response.json();
const repos = data.public_repos;
// Set data to Redis
client.setex(username, 3600, repos);
res.send(setResponse(username, repos));
console.timeEnd(`END time`);
} catch (err) {
console.error(err);
res.status(500);
}
}
And again:
console.time(`START GET time`);
app.get('/repos/:username', cache, getRepos);
console.timeEnd(`END GET time`);
I believe line 6 should be
const REDIS_PORT = process.env.REDIS_PORT || 6379;
process.env.REDIS_PORT
instead ofprocess.env.PORT
And also he should use the const PORT
value instead of 5000
on line 57 to be like this app.listen(PORT, () => {
Yes, you are right. I pinned it as a comment on the video, I will change when I get the chance
Greetings! [thank you for everything so far, hopefully life makes all equal after all :D] how will this middleware deal with changes on the api data and so on? I mean, if the user creates a new repo.. what'd happen? At line 47, we're just checking if the cached data isn't null, not handling any comparison with api current data, right? Thanks in advance. [btw I'm getting my 2nd mern udemy course, thanks 4all again.]
Or, will try
or/and async , await
keywords handle this on the background? Thanks.
I believe line 6 should be
const REDIS_PORT = process.env.REDIS_PORT || 6379;
process.env.REDIS_PORT
instead ofprocess.env.PORT
Correct, sorry about that
Do you have code samples accessing redis through aws elasticache ?
This code did not work for me idk why! this error comes out
ClientClosedError: The client is closed
I have a same problem. The terminal it shows ClientClosedError: The client is closed. If I use await client.connect(), the system hangs
I have the same problem as @MartynCastagno
Resolved: Keep await client.connect()
Put data in a variable and await the response. See function:
async function cache(req, res, next) {
const { username } = req.params;
const data = await client.get(username);
if (data !== null) {
res.send(setResponse(username, data));
} else {
next();
}
}
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK