clear-redis.js
1.06 KB
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
import redis from "@/lib/redis";
export default async function handler(req, res) {
if (req.method !== "POST") {
return res.status(405).json({ error: "Method not allowed" });
}
const authKey = req.headers["authorization"]?.replace("Bearer ", "");
if (!authKey || authKey !== process.env.REDIS_CLEAR_CHACE_KEY) {
return res.status(401).json({ error: "Unauthorized" });
}
const prefix = process.env.REDIS_KEY_PREFIX || "Akruti";
try {
const pattern = `${prefix}*`;
let cursor = "0";
let deletedCount = 0;
do {
const [nextCursor, keys] = await redis.scan(cursor, "MATCH", pattern, "COUNT", 100);
cursor = nextCursor;
if (keys.length > 0) {
await redis.del(...keys);
deletedCount += keys.length;
}
} while (cursor !== "0");
return res.status(200).json({
success: true,
message: `Deleted ${deletedCount} keys matching prefix "${prefix}"`,
deletedCount,
});
} catch (error) {
return res.status(500).json({
success: false,
error: error.message,
});
}
}