1.0.6 • Published 1 year ago

nv-redis-fetch v1.0.6

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

nv-redis-fetch

  • simple fetch redis

install

  • npm install nv-redis-fetch

usage

  const {RD} =require("nv-redis-fetch");
  
    var redis = new RD()
    > redis
    RD {
      family: 4,
      host: '127.0.0.1',
      port: 6379,
      password: 'redis',
      db: 0
    }
    >
    var p = redis.conn()

examples:

###has

     > var p = redis.has('k')
     > p
     Promise { false }

###add

    > var p = redis.add('k',2n**54n)
    > p
    Promise { 18014398509481984n }
    >
    > var p = redis.add('k1',undefined)
    > p
    Promise { undefined }
    > var p = redis.add('k2',null)
    > p
    Promise { null }

    > var p = redis.add('k3',1.1e5)
    > p
    Promise { 110000 }
    >

###get

    > var p = redis.get('k')
    > p
    Promise { 18014398509481984n }
    >

###set

  > var p = redis.set('k1','xyzuvw')
  > p
  Promise { 'xyzuvw' }
  >
  > var p = redis.set('k4','xyzuvw')
  > Uncaught 'not_exist'
  >
  > var p = redis.set_if_exist_else_add('k4','xyzuvw')
  > p
  Promise { 'xyzuvw' }
  >

###del

    > var p = redis.del('k4')
    > p
    Promise { true }
    > var p = redis.has('k4')
    > p
    Promise { false }
    >

###event

    var handler= (data_key)=> {
        console.log("expired:",data_key);
        var promise = redis.add("new",8888888);
        promise.then(
             r=> {
                 console.log(r)
             }
        );
    }

    var __ = redis.regis_expired_noti(handler);

    > redis.event_handlers_
    { '__keyevent@0__:expired': [Function: handler] }
    >



    > var p = redis.has('k3')
    > p
    Promise { true }
    >
    > var p = redis.has('new')
    > p
    Promise { false }
    >
    
    var p = redis.set_expire_ms('k3',8000)
    var p = redis.get_expire_ms('k3')
    > p
    Promise { 6983 }
    
    //after 8 secs
    > expired: k3
    expired: k3
    8888888
    >
    > var p = redis.has('k3')
    > p
    Promise { false }
    > var p = redis.get('new')
    > p
    Promise { 8888888 }
    >

timeout

    const {RD} = require("nv-redis-fetch");




    globalThis.ENV= {
        "@const": {
            redis:{
                password: 'redis',
                db: 0,
                port: 6379,
                host: '127.0.0.1',
                family: 4,
            }
        },
        redis:null
    }

    var rdcfg = ENV["@const"].redis;
    var {password,db,port,host,family} = rdcfg;
    var redis = await new RD(password,db,port,host,family);
    await redis.conn();
    ENV.redis = redis;

    await redis.enable_one_time_task_noti()

    console.log(new Date)
    var tskid = await redis.set_timeout(30000,async(id)=>{console.log("ABCDEF",id,new Date)})
    await redis.has(tskid);

    await redis.has(tskid);


    /*

    > console.log(new Date)
    2022-05-08T12:07:01.114Z
    undefined
    > var tskid = await redis.set_timeout(30000,async(id)=>{console.log("ABCDEF",id,new Date)})
    undefined
    > await redis.has(tskid);
    true
    > ABCDEF _76g85-xtovdaEvsKaGSkCm9MWONt0aq_PZPPzJ4VxWUZ6mrhC6b6NW6Cl6oK-lv 2022-05-08T12:07:31.138Z

    > await redis.has(tskid);
    false
    >

    */

    var tskid = await redis.set_timeout(30000,async(id)=>{console.log("WILL BE CANCELED",id,new Date)})
    await redis.has(tskid);
    await redis.clear_timeout(tskid);
    await redis.has(tskid);
    redis.one_time_task_pool_
    /*
    > var tskid = await redis.set_timeout(30000,async(id)=>{console.log("WILL BE CANCELED",id,new Date)})

    > await redis.has(tskid);
    true
    > await redis.clear_timeout(tskid)
    'Or-euHsN24J6t79TbhTHkY8myZhqpk_958VGDoEHHOQwVct18u-UlxEzGjqz66oD'
    > await redis.has(tskid);
    false
    >
    > redis.one_time_task_pool_
    Map(0) {}
    >

    */




    var tskid0 = await redis.set_timeout(30000,async(id)=>{console.log("TASK0",id,new Date)})
    var tskid1 = await redis.set_timeout(40000,async(id)=>{console.log("TASK1",id,new Date)})

    > redis.one_time_task_pool_
    Map(2) {
      'Y6jXPhJ6J_IBdE3NN8G5rrFaexcfwVuC0TbqmhRLmm_7pb_qeMvgoQbpGDG8xkcm' => [AsyncFunction (anonymous)],
      '1gRX8YC_RkRqCmAG8QtQElkolhEiF-tpYIEfhD4PllxzuA1PsL20iSjpB58wvCA6' => [AsyncFunction (anonymous)]
    }
    >
    > TASK0 Y6jXPhJ6J_IBdE3NN8G5rrFaexcfwVuC0TbqmhRLmm_7pb_qeMvgoQbpGDG8xkcm 2022-05-08T12:16:54.295Z

    >
    > redis.one_time_task_pool_
    Map(1) {
      '1gRX8YC_RkRqCmAG8QtQElkolhEiF-tpYIEfhD4PllxzuA1PsL20iSjpB58wvCA6' => [AsyncFunction (anonymous)]
    }
    >
    >
    > TASK1 1gRX8YC_RkRqCmAG8QtQElkolhEiF-tpYIEfhD4PllxzuA1PsL20iSjpB58wvCA6 2022-05-08T12:17:04.334Z

    > redis.one_time_task_pool_
    Map(0) {}
    >

interval

    var tskid = await redis.set_interval(3000,async(id)=>{console.log("every 3s",id,new Date)})

    /*
    Map(0) {}
    > var tskid = await redis.set_interval(3000,async(id)=>{console.log("every 3s",id,new Date)})
    undefined
    > every 3s c_qmydjNhgLUKwJXhfQFDOUA400Bts4L8NoVyXvXuWl5nMgnYHI3_Oh2W7mZh8sJ@interval:3000 2022-05-08T13:13:33.252Z

    > every 3s c_qmydjNhgLUKwJXhfQFDOUA400Bts4L8NoVyXvXuWl5nMgnYHI3_Oh2W7mZh8sJ@interval:3000 2022-05-08T13:13:36.266Z

    > every 3s c_qmydjNhgLUKwJXhfQFDOUA400Bts4L8NoVyXvXuWl5nMgnYHI3_Oh2W7mZh8sJ@interval:3000 2022-05-08T13:13:39.279Z
    every 3s c_qmydjNhgLUKwJXhfQFDOUA400Bts4L8NoVyXvXuWl5nMgnYHI3_Oh2W7mZh8sJ@interval:3000 2022-05-08T13:13:42.293Z

    > redis.one_time_task_pool_
    Map(1) {
      'c_qmydjNhgLUKwJXhfQFDOUA400Bts4L8NoVyXvXuWl5nMgnYHI3_Oh2W7mZh8sJ@interval:3000' => [AsyncFunction (anonymous)]
    }
    >
    > every 3s c_qmydjNhgLUKwJXhfQFDOUA400Bts4L8NoVyXvXuWl5nMgnYHI3_Oh2W7mZh8sJ@interval:3000 2022-05-08T13:13:45.304Z
    every 3s c_qmydjNhgLUKwJXhfQFDOUA400Bts4L8NoVyXvXuWl5nMgnYHI3_Oh2W7mZh8sJ@interval:3000 2022-05-08T13:13:48.316Z


    */

    await redis.clear_interval(tskid)

    /*
    > redis.one_time_task_pool_
    Map(0) {}
    >

    */

PROPS

###config

redis.db                            redis.family                        redis.host
redis.password                      redis.port

METHODS

###conn

redis.conn                     redis.disconn
redis.reconn                   redis.is_closed

operator

redis.has                      redis.get            redis.typof
redis.add                      redis.set           
redis.set_if_exist_else_add

redis.del          
redis.del_if_exist_else_do_nothing

event

redis.regis_expired_noti(handler)
redis.unregis_expired_noti


redis.get_expire_s      redis.get_expire_ms
redis.set_expire_s      redis.set_expire_ms

redis.unset_expire

 

getter

redis.expired_noti_subkey_
redis.event_handlers_

redis.rd_                       redis.sub_

tmout

async set_timeout(ms,handle=DFLT_ONE_TIME_TASK_HANDLE) {
async set_time_at(date,handle=DFLT_ONE_TIME_TASK_HANDLE) {
async set_interval(ms,handle=DFLT_ONE_TIME_TASK_HANDLE) {

async enable_one_time_task_noti() {
is_one_time_task_noti_enabled() {return(this.#one_time_task_pool!==undefined)}

async disable_one_time_task_noti() {

RESTRICT

  • currently only support undefined|null|boolean|int|float|bigint
  • others all treated-as string, coz performance issue

LICENSE

  • ISC