-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
40 lines (32 loc) · 929 Bytes
/
index.js
File metadata and controls
40 lines (32 loc) · 929 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const express = require('express');
const { cacheMiddleware, generateCacheKey } = require('./middlewares/cache.middleware');
const redisClient = require('./redis');
const app = express();
const port = process.env.PORT || 3000;
const ONE_MINUTE = 60;
// Hanya untuk contoh, misalnya get data memerlukan 2 detik
const getDataFromDatabase = async () => {
return new Promise((resolve) => {
setTimeout(() => {
resolve({
id: 1,
name: 'Jacky Rusly'
});
}, 2000);
});
};
(async () => {
await redisClient.connect();
app.get('/', cacheMiddleware, async (req, res) => {
const data = await getDataFromDatabase();
const response = {
data,
};
const key = generateCacheKey(req);
await redisClient.setEx(key, ONE_MINUTE, JSON.stringify(response));
res.json(response);
});
app.listen(port, () => {
console.log(`App listening on port ${port}`);
});
})();