clear-redis.js 1.06 KB
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,
    });
  }
}