forked from caching-tools/next-shared-cache
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcache-handler-redis-stack.js
51 lines (41 loc) · 1.23 KB
/
cache-handler-redis-stack.js
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
41
42
43
44
45
46
47
48
49
50
51
const { IncrementalCache } = require('@neshca/cache-handler');
const { createHandler } = require('@neshca/cache-handler/redis-stack');
const { createClient } = require('redis');
if (!process.env.REDIS_URL) {
console.warn('Make sure that REDIS_URL is added to the .env.local file and loaded properly.');
}
const PREFIX = 'JSON:';
const CONNECT_TIMEOUT_MS = 5 * 50 * 1000;
function createRedisClient(url) {
const client = createClient({
url,
name: `cache-handler:${PREFIX}${process.env.PORT ?? process.pid}`,
socket: {
connectTimeout: CONNECT_TIMEOUT_MS,
},
});
client.on('error', (error) => {
console.error('Redis error:', error.message);
});
return client;
}
async function connect(client) {
try {
await client.connect();
} catch (error) {
console.error('Redis connection error:', error.message);
}
}
if (process.env.SERVER_STARTED) {
const client = createRedisClient(process.env.REDIS_URL);
connect(client).then(() => {
console.log('Redis connected');
});
IncrementalCache.onCreation(
createHandler({
client,
keyPrefix: PREFIX,
}),
);
}
module.exports = IncrementalCache;