redis.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const Redis = require("ioredis");
  2. const env = require("./env");
  3. let client;
  4. if (env.REDIS_ENABLED) {
  5. client = new Redis({
  6. host: env.REDIS_HOST,
  7. port: env.REDIS_PORT,
  8. db: env.REDIS_DB,
  9. ...(env.REDIS_PASSWORD && { password: env.REDIS_PASSWORD })
  10. });
  11. }
  12. const key = {
  13. link: (address, domain_id, user_id) => `${address}-${domain_id || ""}-${user_id || ""}`,
  14. domain: (address) => `d-${address}`,
  15. stats: (link_id) => `s-${link_id}`,
  16. host: (address) => `h-${address}`,
  17. user: (emailOrKey) => `u-${emailOrKey}`
  18. };
  19. const remove = {
  20. domain: (domain) => {
  21. if (!domain) return;
  22. return client.del(key.domain(domain.address));
  23. },
  24. host: (host) => {
  25. if (!host) return;
  26. return client.del(key.host(host.address));
  27. },
  28. link: (link) => {
  29. if (!link) return;
  30. return client.del(key.link(link.address, link.domain_id));
  31. },
  32. user: (user) => {
  33. if (!user) return;
  34. return Promise.all([
  35. client.del(key.user(user.email)),
  36. client.del(key.user(user.apikey))
  37. ]);
  38. }
  39. };
  40. module.exports = {
  41. client,
  42. key,
  43. remove,
  44. }