In-memory caching stores data temporarily in your app's memory. It helps your app respond faster by reusing data instead of fetching it again.
In-memory caching with node-cache in Express
import NodeCache from 'node-cache'; const cache = new NodeCache({ stdTTL: 100, checkperiod: 120 }); // Set a value cache.set(key, value, ttlInSeconds); // Get a value const value = cache.get(key); // Delete a value cache.del(key);
stdTTL sets default time to live (seconds) for cached items.
checkperiod is how often expired items are cleaned up.
cache.set('user_1', { name: 'Alice' }, 300);
const user = cache.get('user_1'); if (user) { console.log('User found:', user.name); } else { console.log('User not in cache'); }
cache.del('user_1');
This Express app uses node-cache to store data for 60 seconds. When you request '/data', it first checks the cache. If data is there, it returns cached data quickly. If not, it creates fresh data, caches it, and returns it.
import express from 'express'; import NodeCache from 'node-cache'; const app = express(); const cache = new NodeCache({ stdTTL: 60 }); // cache items live 60 seconds app.get('/data', (req, res) => { const key = 'myData'; const cachedData = cache.get(key); if (cachedData) { return res.send({ source: 'cache', data: cachedData }); } // Simulate slow data fetch const freshData = { message: 'Hello from server', time: new Date().toISOString() }; cache.set(key, freshData); res.send({ source: 'server', data: freshData }); }); app.listen(3000, () => { console.log('Server running on http://localhost:3000'); });
Cache is stored in app memory, so it resets if the app restarts.
Use caching only for data that can be temporarily stored and safely reused.
Be mindful of cache size and expiration to avoid memory issues.
In-memory caching speeds up your app by storing data temporarily.
node-cache is a simple tool to add caching in Node.js apps.
Always check cache before fetching fresh data to save time.
Practice
node-cache in an Express app?Solution
Step 1: Understand what caching means
Caching means storing data temporarily to avoid repeated slow operations.Step 2: Identify node-cache role in Express
node-cache stores data in memory temporarily to speed up data retrieval.Final Answer:
To temporarily store data in memory for faster access -> Option BQuick Check:
In-memory caching = temporary fast storage [OK]
- Confusing cache with permanent database storage
- Thinking node-cache handles authentication
- Assuming node-cache serves static files
node-cache?Solution
Step 1: Recall node-cache import and usage
node-cache is imported as NodeCache and instantiated with new keyword.Step 2: Check syntax correctness
Correct syntax is: const cache = new NodeCache();Final Answer:
const cache = new NodeCache(); -> Option CQuick Check:
Use new NodeCache() to create cache [OK]
- Calling nodeCache.create() which does not exist
- Using lowercase 'nodeCache' instead of 'NodeCache'
- Omitting 'new' keyword when creating instance
/data twice quickly?const express = require('express');
const NodeCache = require('node-cache');
const app = express();
const cache = new NodeCache();
app.get('/data', (req, res) => {
const cached = cache.get('myData');
if (cached) {
res.send('From cache: ' + cached);
} else {
const freshData = 'Hello World';
cache.set('myData', freshData, 10);
res.send('Fresh data: ' + freshData);
}
});
app.listen(3000);Solution
Step 1: Analyze cache check on first request
Cache is empty initially, so first request sets and returns fresh data.Step 2: Analyze cache check on second request
Second request finds data in cache and returns cached data.Final Answer:
First request: Fresh data: Hello World; Second request: From cache: Hello World -> Option AQuick Check:
Cache empty first, then hit cache second [OK]
- Assuming cache is always empty
- Thinking cache returns fresh data every time
- Mixing order of fresh and cached responses
node-cache in Express:const NodeCache = require('node-cache');
const cache = NodeCache();
app.get('/item', (req, res) => {
const item = cache.get('itemKey');
if (!item) {
cache.set('itemKey', 'value');
res.send('Set new item');
} else {
res.send('Cached item: ' + item);
}
});Solution
Step 1: Check cache instance creation
node-cache requires 'new NodeCache()' to create an instance.Step 2: Identify missing 'new' keyword
Code uses 'NodeCache()' without 'new', causing error.Final Answer:
Missing 'new' keyword when creating cache instance -> Option DQuick Check:
Always use 'new' with NodeCache [OK]
- Forgetting 'new' keyword
- Thinking cache.set needs callback
- Assuming cache keys must be special format
node-cache. Which code snippet correctly sets the cache with expiration and retrieves it safely in Express?Solution
Step 1: Understand TTL unit in node-cache
TTL (time to live) is in seconds, so 5 minutes = 300 seconds.Step 2: Check correct usage of set and get
cache.set(key, value, ttl) sets with expiration; cache.get(key) retrieves value.Final Answer:
cache.set('user1', profile, 300); const data = cache.get('user1'); if (data) res.send(data); else res.send('No cache'); -> Option AQuick Check:
TTL in seconds, set with 300 for 5 minutes [OK]
- Using TTL in milliseconds instead of seconds
- Passing TTL to get() method incorrectly
- Setting TTL too low (5 seconds instead of 300)
Ready to prove it?
Pass the test and this pattern moves unknown
