**重要:以下所有函數的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。