redis.js 1.0 KB

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