**重要:以下所有函数的key参数,如果非感叹号"!"开头,视为临时数据,进程退出后会丢失。**
* * * * *
### zx.set(key,dat);
存储键值数据(永久数据key必须用"!"开头,下同)。dat 可以是数值、字符串、布尔值、空值、未定义值以及一元或多元数组,读取时能够正确还原
key不能大于16K字节,dat 不能 大于等于 64K字节(由于字母是双字节存储,所以 字串.length 应小于32K,如果还有数组等情况也需要考虑减少长度),如果超出长度会返回 flase ,不会改变原有数据;
删除数据:zx.set("key");//相当于zx.set("key",undefined),可把"key"数据删除
### zx.setcopy(key1,key2);
批量复制键值数据。例:zx.setcopy("kkk","!ttt");//把kkk*(所有kkk开头的临时键值,不包括kkk本身) 复制到 !ttt*(永久键值)
限制:根key("")不能复制或被复制;有包含关系的目录之间也不能复制。
### zx.setdel(key);
删除所有以 key 为前缀的值,包括 key 本身的值,返回删除数量;
这是批量删除,请谨慎使用。
### zx.get(key);
读取数据;如果数据不存在,返回 undefined
### zx.setget(key,dat);
设置新数据并返回原有数据;是原子操作,不会出现两个线程同时设置数据而没有正确返回原有数据。但是要留意当返回值为 flase 时,无法区分这是原有值还是操作失败。
### zx.getlist(key,列取数量,[true:flase],[前缀匹配长度])
批量 zx.get(),但不包括key本身;[true:flase]指定结果是否包含数据;前缀匹配长度是指列取的key必须与参数key前端指定长度相同(注意1个中文字符的长度是3)。
例如有数据:["aaA001","aaB01","aaB005","aaB006","aaB1","aaBC","aaD","bb"];
zx.getlist("aaB005",100,false,3)的结果是 ["aaB006","aaB1","aaBC"], 前缀匹配字串是"aaB;
zx.getlist("aaB1",100) 的结果是 ["aaBC","aaD","bb"],因为不设前缀匹配,"b"排在"a"的后面,所以也列出来了;
### zx.incr(key,[i]);
对 key 对应数值相加,返回相加结果。如果不带 i 参数,则清零,并返回原值。
数值范围为32位整数,超出此范围会溢出截断。
读取数值用 zx.incr(key,0);删除数值用 zx.incr(key);读取不存在的 key 返回 0;
### zx.incr64(key,[i]);
zx.incr()的64位版本,与32位版数值是同步的,对32位版数值操作会自动升级为64位。
注意1:如果用32位版操作64位版数值,数值会回退为32位,造成精度丢失。
注意2:由于JS语言精确整数只支持到52位,超过此范围返回的结果是不精确的(近似值)。
### zx.arr(key,[id],[dat],[true]);
加入整数(id)集合;key是集合名;id是一个32位正整数;dat是字符串。
一个集合由若干个id项组成,一个id项对应一个dat,需要在集合中加入一个id项,只要把对应的dat设置为非空字串即可;同样,删除一个id就是把对应dat设为空字串("")。
* 带前2个参数
仅读取此 集合 中 某个id 的 dat
* 带前3个参数
加入或删除一个id,如果此id原来已存在,返回true,否则返回false,写入失败(存储空间用尽或key/dat长度过长)返回undefined;
* 第4个参数为true
加入或删除一个id,并返回此id原来的dat.
### zx.arradd(key,id,dat,[true]);
此方法同等于 zx.arr(key,id,dat,[true]);
### zx.arrdel(key,[id],[true]);
删除一个id,及是否返回原有内容。如果只带一个key参数,则删除此key的所有id。
此方法同等于 zx.arradd(key,id,'',[true])。
### zx.arrlist(key,[id],[数量],[true]);
列取集合中若干数量的id;
id为起始id,结果中包含此id;数量不大于10000,需要反向列取可以设为负数;true 表示结果中需要包含 dat。
* 带前俩个参数
查询此id是否存在,返回true或false;
* 只带key参数
如果只带key参数,则查询并返回下一个有效的key。
### zx.arrdatcat(key,id,dat,[true]);
往集合中某id项追加数据,true参数表示是否返回原数据,如果不需要返回原数据则成功返回true,失败返回undefined。如果结果长度等于或超过64K字节(32K字符)则追加失败,返回undefined ,但不会改变原有数据。
### zx.mapadd(key,item);
加入字串(item)集合(并更新这个item的时间);key是集合名,item 是需要加入的项,是一个字符串。
如果item已存在,返回上次加入(或上次更新)时间。
与整数集合不同,字串集合由若干个item(字符串)组成,即使item是数字也会自动转换为字串(而且arr比map效率高),每个item没有对应的数据,但是有一个隐含的时间值。
### zx.mapdel(key,[item]);
删除集合中的某项或删除全部(不带item参数时);
### zx.maplist(key,[item],[数量],[true]);
列取集合中若干数量的 item;
item为起始项,结果不包含此项;数量不大于10000,不能设为负数;true 表示结果中需要包含项时间。
* 带前两个参数
查询此item 是否存在,返回true 或 false;
* 只带key参数
如果只带key参数,则查询并返回下一个有效key。