1.0.6 • Published 1 year ago
nv-redis-fetch v1.0.6
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