aldikhan13

CUSTOM NODE REDIS PROMISE LIKE IOREDIS

Apr 22nd, 2021 (edited)
482
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import q from 'q'
  2. import redisClient, { ClientOpts, RedisClient } from 'redis'
  3.  
  4. ./**
  5. * [✓] Redis Keys
  6. * [✓] Redis String
  7. * [✓] Redis Hashes
  8. * [x] Redis List
  9. * [x] Redis Sets
  10. * [x] Redis Sorted Sets
  11. * [x] Publish Subscribe
  12. * [x] Redis Transaction
  13. */
  14.  
  15. export class Redis {
  16.     private clientRedis: RedisClient
  17.  
  18.     constructor(options: ClientOpts) {
  19.         this.clientRedis = redisClient.createClient({ ...options })
  20.     }
  21.  
  22.     async get(key: string): Promise<any> {
  23.         return q.Promise((resolve, reject) => {
  24.             this.clientRedis.get(key, (err, reply) => {
  25.                 if (err) reject(err)
  26.                 resolve(reply)
  27.             })
  28.         })
  29.     }
  30.  
  31.     async set(key: string, value: string): Promise<any> {
  32.         return q.Promise((resolve, reject) => {
  33.             this.clientRedis.set(key, value, (err, reply) => {
  34.                 if (err) reject(err)
  35.                 resolve(reply)
  36.             })
  37.         })
  38.     }
  39.  
  40.     async move(key: string, db: string | number): Promise<Record<string, any>> {
  41.         return q.Promise(() => {
  42.             this.clientRedis.move(key, db)
  43.         })
  44.     }
  45.  
  46.     async dump(key: string): Promise<Record<string, any>> {
  47.         return q.Promise((resolve, reject) => {
  48.             this.clientRedis.dump(key, (err, reply) => {
  49.                 if (err) reject(err)
  50.                 resolve({ reply })
  51.             })
  52.         })
  53.     }
  54.  
  55.     async setex(key: string, second: number, value: string): Promise<Record<string, any>> {
  56.         return q.Promise((resolve, reject) => {
  57.             this.clientRedis.setex(key, second, value, (err, reply) => {
  58.                 if (err) reject(err)
  59.                 resolve({ reply })
  60.             })
  61.         })
  62.     }
  63.  
  64.     async setnx(key: string, value: string): Promise<Record<string, any>> {
  65.         return q.Promise((resolve, reject) => {
  66.             this.clientRedis.setnx(key, value, (err, reply) => {
  67.                 if (err) reject(err)
  68.                 resolve({ reply })
  69.             })
  70.         })
  71.     }
  72.  
  73.     async expire(key: string, second: number): Promise<any> {
  74.         return q.Promise((resolve, reject) => {
  75.             this.clientRedis.expire(key, second, (err, reply) => {
  76.                 if (err) reject(err)
  77.                 resolve(reply)
  78.             })
  79.         })
  80.     }
  81.  
  82.     async incrby(key: string, increment: number): Promise<any> {
  83.         return q.Promise((resolve, reject) => {
  84.             this.clientRedis.incrby(key, increment, (err, reply): void => {
  85.                 if (err) reject(err)
  86.                 resolve(reply)
  87.             })
  88.         })
  89.     }
  90.  
  91.     async incr(key: string): Promise<any> {
  92.         return q.Promise((resolve, reject) => {
  93.             this.clientRedis.incr(key, (err, reply): void => {
  94.                 if (err) reject(err)
  95.                 resolve(reply)
  96.             })
  97.         })
  98.     }
  99.  
  100.     async del(key: string): Promise<any> {
  101.         return q.Promise((resolve, reject) => {
  102.             this.clientRedis.del(key, (err, reply): void => {
  103.                 if (err) reject(err)
  104.                 resolve(reply)
  105.             })
  106.         })
  107.     }
  108.  
  109.     async keys(pattern: string): Promise<any> {
  110.         return q.Promise((resolve, reject) => {
  111.             this.clientRedis.keys(pattern, (err, reply): void => {
  112.                 if (err) reject(err)
  113.                 resolve(reply)
  114.             })
  115.         })
  116.     }
  117.  
  118.     async ttl(key: string): Promise<any> {
  119.         return q.Promise((resolve, reject) => {
  120.             this.clientRedis.ttl(key, (err, reply): void => {
  121.                 if (err) reject(err)
  122.                 resolve(reply)
  123.             })
  124.         })
  125.     }
  126.  
  127.     async expireat(key: string, timestamp: number): Promise<any> {
  128.         return q.Promise((resolve, reject) => {
  129.             this.clientRedis.expireat(key, timestamp, (err, reply): void => {
  130.                 if (err) reject(err)
  131.                 resolve(reply)
  132.             })
  133.         })
  134.     }
  135.  
  136.     async decr(key: string): Promise<any> {
  137.         return q.Promise((resolve, reject) => {
  138.             this.clientRedis.decr(key, (err, reply): void => {
  139.                 if (err) reject(err)
  140.                 resolve(reply)
  141.             })
  142.         })
  143.     }
  144.  
  145.     async decrby(key: string, decrement: number): Promise<any> {
  146.         return q.Promise((resolve, reject) => {
  147.             this.clientRedis.decrby(key, decrement, (err, reply): void => {
  148.                 if (err) reject(err)
  149.                 resolve(reply)
  150.             })
  151.         })
  152.     }
  153.  
  154.     async persist(key: string): Promise<any> {
  155.         return q.Promise((resolve, reject) => {
  156.             this.clientRedis.persist(key, (err, reply): void => {
  157.                 if (err) reject(err)
  158.                 resolve(reply)
  159.             })
  160.         })
  161.     }
  162.  
  163.     async scan(arg: any | any[]): Promise<any> {
  164.         return q.Promise((resolve, reject) => {
  165.             this.clientRedis.scan(arg, (err, reply): void => {
  166.                 if (err) reject(err)
  167.                 resolve(reply)
  168.             })
  169.         })
  170.     }
  171.  
  172.     async pexpire(key: string, milliseconds: number): Promise<any> {
  173.         return q.Promise((resolve, reject) => {
  174.             this.clientRedis.pexpire(key, milliseconds, (err, reply): void => {
  175.                 if (err) reject(err)
  176.                 resolve(reply)
  177.             })
  178.         })
  179.     }
  180.  
  181.     async pexpireat(key: string): Promise<any> {
  182.         return q.Promise((resolve, reject) => {
  183.             this.clientRedis.pttl(key, (err, reply): void => {
  184.                 if (err) reject(err)
  185.                 resolve(reply)
  186.             })
  187.         })
  188.     }
  189.  
  190.     async exists(arg: string | string[]): Promise<any> {
  191.         return q.Promise((resolve, reject) => {
  192.             this.clientRedis.exists(arg, (err, reply): void => {
  193.                 if (err) reject(err)
  194.                 resolve(reply)
  195.             })
  196.         })
  197.     }
  198.  
  199.     async msetnx(arg: string | string[]): Promise<any> {
  200.         return q.Promise((resolve, reject) => {
  201.             this.clientRedis.msetnx(arg, (err, reply): void => {
  202.                 if (err) reject(err)
  203.                 resolve(reply)
  204.             })
  205.         })
  206.     }
  207.  
  208.     async mset(arg: string | string[]): Promise<any> {
  209.         return q.Promise((resolve, reject) => {
  210.             this.clientRedis.mset(arg, (err, reply): void => {
  211.                 if (err) reject(err)
  212.                 resolve(reply)
  213.             })
  214.         })
  215.     }
  216.  
  217.     async mget(arg: string | string[]): Promise<any> {
  218.         return q.Promise((resolve, reject) => {
  219.             this.clientRedis.mget(arg, (err, reply): void => {
  220.                 if (err) reject(err)
  221.                 resolve(reply)
  222.             })
  223.         })
  224.     }
  225.  
  226.     async rename(key: string, newKey: string): Promise<any> {
  227.         return q.Promise((resolve, reject) => {
  228.             this.clientRedis.rename(key, newKey, (err, reply): void => {
  229.                 if (err) reject(err)
  230.                 resolve(reply)
  231.             })
  232.         })
  233.     }
  234.  
  235.     async renamenx(key: string, newKey: string): Promise<any> {
  236.         return q.Promise((resolve, reject) => {
  237.             this.clientRedis.renamenx(key, newKey, (err, reply): void => {
  238.                 if (err) reject(err)
  239.                 resolve(reply)
  240.             })
  241.         })
  242.     }
  243.  
  244.     async type(key: string): Promise<any> {
  245.         return q.Promise((resolve, reject) => {
  246.             this.clientRedis.type(key, (err, reply): void => {
  247.                 if (err) reject(err)
  248.                 resolve(reply)
  249.             })
  250.         })
  251.     }
  252.  
  253.     async incrbyfloat(key: string, increment: number): Promise<any> {
  254.         return q.Promise((resolve, reject) => {
  255.             this.clientRedis.incrbyfloat(key, increment, (err, reply): void => {
  256.                 if (err) reject(err)
  257.                 resolve(reply)
  258.             })
  259.         })
  260.     }
  261.  
  262.     async append(key: string, value: string): Promise<any> {
  263.         return q.Promise((resolve, reject) => {
  264.             this.clientRedis.append(key, value, (err, reply): void => {
  265.                 if (err) reject(err)
  266.                 resolve(reply)
  267.             })
  268.         })
  269.     }
  270.  
  271.     async strlen(key: string): Promise<any> {
  272.         return q.Promise((resolve, reject) => {
  273.             this.clientRedis.strlen(key, (err, reply): void => {
  274.                 if (err) reject(err)
  275.                 resolve(reply)
  276.             })
  277.         })
  278.     }
  279.  
  280.     async setrange(key: string, offset: number, value: string): Promise<any> {
  281.         return q.Promise((resolve, reject) => {
  282.             this.clientRedis.setrange(key, offset, value, (err, reply): void => {
  283.                 if (err) reject(err)
  284.                 resolve(reply)
  285.             })
  286.         })
  287.     }
  288.  
  289.     async getset(key: string, value: string): Promise<any> {
  290.         return q.Promise((resolve, reject) => {
  291.             this.clientRedis.getset(key, value, (err, reply): void => {
  292.                 if (err) reject(err)
  293.                 resolve(reply)
  294.             })
  295.         })
  296.     }
  297.  
  298.     async getrange(key: string, start: number, end: number): Promise<any> {
  299.         return q.Promise((resolve, reject) => {
  300.             this.clientRedis.getrange(key, start, end, (err, reply): void => {
  301.                 if (err) reject(err)
  302.                 resolve(reply)
  303.             })
  304.         })
  305.     }
  306.  
  307.     async hset(key: string, ...args: any): Promise<any> {
  308.         return q.Promise((resolve, reject) => {
  309.             this.clientRedis.hset(key, args, (err, reply): void => {
  310.                 if (err) reject(err)
  311.                 resolve(reply)
  312.             })
  313.         })
  314.     }
  315.  
  316.     async hget(key: string, field: string): Promise<any> {
  317.         return q.Promise((resolve, reject) => {
  318.             this.clientRedis.hget(key, field, (err, reply): void => {
  319.                 if (err) reject(err)
  320.                 resolve(reply)
  321.             })
  322.         })
  323.     }
  324.  
  325.     async hgetall(key: string): Promise<any> {
  326.         return q.Promise((resolve, reject) => {
  327.             this.clientRedis.hgetall(key, (err, reply): void => {
  328.                 if (err) reject(err)
  329.                 resolve(reply)
  330.             })
  331.         })
  332.     }
  333.  
  334.     async hmset(key: string, args: any): Promise<any> {
  335.         return q.Promise((resolve, reject) => {
  336.             this.clientRedis.hmset(key, args, (err, reply): void => {
  337.                 if (err) reject(err)
  338.                 resolve(reply)
  339.             })
  340.         })
  341.     }
  342.  
  343.     async hmget(key: string, args: string | string[]): Promise<any> {
  344.         return q.Promise((resolve, reject) => {
  345.             this.clientRedis.hmget(key, args, (err, reply): void => {
  346.                 if (err) reject(err)
  347.                 resolve(reply)
  348.             })
  349.         })
  350.     }
  351.  
  352.     async hdel(key: string, args: string | string[]): Promise<any> {
  353.         return q.Promise((resolve, reject) => {
  354.             this.clientRedis.hdel(key, args, (err, reply): void => {
  355.                 if (err) reject(err)
  356.                 resolve(reply)
  357.             })
  358.         })
  359.     }
  360.  
  361.     async hexists(key: string, field: string): Promise<any> {
  362.         return q.Promise((resolve, reject) => {
  363.             this.clientRedis.hexists(key, field, (err, reply): void => {
  364.                 if (err) reject(err)
  365.                 resolve(reply)
  366.             })
  367.         })
  368.     }
  369.  
  370.     async hkeys(key: string): Promise<any> {
  371.         return q.Promise((resolve, reject) => {
  372.             this.clientRedis.hkeys(key, (err, reply): void => {
  373.                 if (err) reject(err)
  374.                 resolve(reply)
  375.             })
  376.         })
  377.     }
  378.  
  379.     async hlen(key: string): Promise<any> {
  380.         return q.Promise((resolve, reject) => {
  381.             this.clientRedis.hlen(key, (err, reply): void => {
  382.                 if (err) reject(err)
  383.                 resolve(reply)
  384.             })
  385.         })
  386.     }
  387.  
  388.     async hincrby(key: string, field: string, increment: number): Promise<any> {
  389.         return q.Promise((resolve, reject) => {
  390.             this.clientRedis.hincrby(key, field, increment, (err, reply): void => {
  391.                 if (err) reject(err)
  392.                 resolve(reply)
  393.             })
  394.         })
  395.     }
  396.  
  397.     async hsetnx(key: string, field: string, value: string): Promise<any> {
  398.         return q.Promise((resolve, reject) => {
  399.             this.clientRedis.hsetnx(key, field, value, (err, reply): void => {
  400.                 if (err) reject(err)
  401.                 resolve(reply)
  402.             })
  403.         })
  404.     }
  405.  
  406.     async hkeys(key: string): Promise<any> {
  407.         return q.Promise((resolve, reject) => {
  408.             this.clientRedis.hkeys(key, (err, reply) => {
  409.                 if (err) reject(err)
  410.                 resolve(reply)
  411.             })
  412.         })
  413.     }
  414.  
  415.     async hstrlen(key: string, field: string): Promise<any> {
  416.         return q.Promise((resolve, reject) => {
  417.             this.clientRedis.hstrlen(key, field, (err, reply) => {
  418.                 if (err) reject(err)
  419.                 resolve(reply)
  420.             })
  421.         })
  422.     }
  423.  
  424.     async hvals(key: string): Promise<any> {
  425.         return q.Promise((resolve, reject) => {
  426.             this.clientRedis.hvals(key, (err, reply) => {
  427.                 if (err) reject(err)
  428.                 resolve(reply)
  429.             })
  430.         })
  431.     }
  432.  
  433.     async hscan(key: string, args: string | string[]): Promise<any> {
  434.         return q.Promise((resolve, reject) => {
  435.             this.clientRedis.hscan(key, args, (err, reply) => {
  436.                 if (err) reject(err)
  437.                 resolve(reply)
  438.             })
  439.         })
  440.     }
  441.  
  442.     async hincrbyfloat(key: string, field: string, increment: number): Promise<any> {
  443.         return q.Promise((resolve, reject) => {
  444.             this.clientRedis.hincrbyfloat(key, field, increment, (err, reply) => {
  445.                 if (err) reject(err)
  446.                 resolve(reply)
  447.             })
  448.         })
  449.     }
  450. }
Add Comment
Please, Sign In to add comment