**重要:以下所有函數(shù)的key參數(shù),如果非感嘆號"!"開頭,視為臨時(shí)數(shù)據(jù),進(jìn)程退出后會丟失。**
* * * * *
### zx.set(key,dat);
存儲鍵值數(shù)據(jù)(永久數(shù)據(jù)key必須用"!"開頭,下同)。dat 可以是數(shù)值、字符串、布爾值、空值、未定義值以及一元或多元數(shù)組,讀取時(shí)能夠正確還原
key不能大于16K字節(jié),dat 不能 大于等于 64K字節(jié)(由于字母是雙字節(jié)存儲,所以 字串.length 應(yīng)小于32K,如果還有數(shù)組等情況也需要考慮減少長度),如果超出長度會返回 flase ,不會改變原有數(shù)據(jù);
刪除數(shù)據(jù):zx.set("key");//相當(dāng)于zx.set("key",undefined),可把"key"數(shù)據(jù)刪除
### zx.setcopy(key1,key2);
批量復(fù)制鍵值數(shù)據(jù)。例:zx.setcopy("kkk","!ttt");//把kkk*(所有kkk開頭的臨時(shí)鍵值,不包括kkk本身) 復(fù)制到 !ttt*(永久鍵值)
限制:根key("")不能復(fù)制或被復(fù)制;有包含關(guān)系的目錄之間也不能復(fù)制。
### zx.setdel(key);
刪除所有以 key 為前綴的值,包括 key 本身的值,返回刪除數(shù)量;
這是批量刪除,請謹(jǐn)慎使用。
### zx.get(key);
讀取數(shù)據(jù);如果數(shù)據(jù)不存在,返回 undefined
### zx.setget(key,dat);
設(shè)置新數(shù)據(jù)并返回原有數(shù)據(jù);是原子操作,不會出現(xiàn)兩個(gè)線程同時(shí)設(shè)置數(shù)據(jù)而沒有正確返回原有數(shù)據(jù)。但是要留意當(dāng)返回值為 flase 時(shí),無法區(qū)分這是原有值還是操作失敗。
### zx.getlist(key,列取數(shù)量,[true:flase],[前綴匹配長度])
批量 zx.get(),但不包括key本身;[true:flase]指定結(jié)果是否包含數(shù)據(jù);前綴匹配長度是指列取的key必須與參數(shù)key前端指定長度相同(注意1個(gè)中文字符的長度是3)。
例如有數(shù)據(jù):["aaA001","aaB01","aaB005","aaB006","aaB1","aaBC","aaD","bb"];
zx.getlist("aaB005",100,false,3)的結(jié)果是 ["aaB006","aaB1","aaBC"], 前綴匹配字串是"aaB;
zx.getlist("aaB1",100) 的結(jié)果是 ["aaBC","aaD","bb"],因?yàn)椴辉O(shè)前綴匹配,"b"排在"a"的后面,所以也列出來了;
### zx.incr(key,[i]);
對 key 對應(yīng)數(shù)值相加,返回相加結(jié)果。如果不帶 i 參數(shù),則清零,并返回原值。
數(shù)值范圍為32位整數(shù),超出此范圍會溢出截?cái)唷? 讀取數(shù)值用 zx.incr(key,0);刪除數(shù)值用 zx.incr(key);讀取不存在的 key 返回 0;
### zx.incr64(key,[i]);
zx.incr()的64位版本,與32位版數(shù)值是同步的,對32位版數(shù)值操作會自動升級為64位。
注意1:如果用32位版操作64位版數(shù)值,數(shù)值會回退為32位,造成精度丟失。
注意2:由于JS語言精確整數(shù)只支持到52位,超過此范圍返回的結(jié)果是不精確的(近似值)。
### zx.arr(key,[id],[dat],[true]);
加入整數(shù)(id)集合;key是集合名;id是一個(gè)32位正整數(shù);dat是字符串。
一個(gè)集合由若干個(gè)id項(xiàng)組成,一個(gè)id項(xiàng)對應(yīng)一個(gè)dat,需要在集合中加入一個(gè)id項(xiàng),只要把對應(yīng)的dat設(shè)置為非空字串即可;同樣,刪除一個(gè)id就是把對應(yīng)dat設(shè)為空字串("")。
* 帶前2個(gè)參數(shù)
僅讀取此 集合 中 某個(gè)id 的 dat
* 帶前3個(gè)參數(shù)
加入或刪除一個(gè)id,如果此id原來已存在,返回true,否則返回false,寫入失敗(存儲空間用盡或key/dat長度過長)返回undefined;
* 第4個(gè)參數(shù)為true
加入或刪除一個(gè)id,并返回此id原來的dat.
### zx.arradd(key,id,dat,[true]);
此方法同等于 zx.arr(key,id,dat,[true]);
### zx.arrdel(key,[id],[true]);
刪除一個(gè)id,及是否返回原有內(nèi)容。如果只帶一個(gè)key參數(shù),則刪除此key的所有id。
此方法同等于 zx.arradd(key,id,'',[true])。
### zx.arrlist(key,[id],[數(shù)量],[true]);
列取集合中若干數(shù)量的id;
id為起始id,結(jié)果中包含此id;數(shù)量不大于10000,需要反向列取可以設(shè)為負(fù)數(shù);true 表示結(jié)果中需要包含 dat。
* 帶前倆個(gè)參數(shù)
查詢此id是否存在,返回true或false;
* 只帶key參數(shù)
如果只帶key參數(shù),則查詢并返回下一個(gè)有效的key。
### zx.arrdatcat(key,id,dat,[true]);
往集合中某id項(xiàng)追加數(shù)據(jù),true參數(shù)表示是否返回原數(shù)據(jù),如果不需要返回原數(shù)據(jù)則成功返回true,失敗返回undefined。如果結(jié)果長度等于或超過64K字節(jié)(32K字符)則追加失敗,返回undefined ,但不會改變原有數(shù)據(jù)。
### zx.mapadd(key,item);
加入字串(item)集合(并更新這個(gè)item的時(shí)間);key是集合名,item 是需要加入的項(xiàng),是一個(gè)字符串。
如果item已存在,返回上次加入(或上次更新)時(shí)間。
與整數(shù)集合不同,字串集合由若干個(gè)item(字符串)組成,即使item是數(shù)字也會自動轉(zhuǎn)換為字串(而且arr比map效率高),每個(gè)item沒有對應(yīng)的數(shù)據(jù),但是有一個(gè)隱含的時(shí)間值。
### zx.mapdel(key,[item]);
刪除集合中的某項(xiàng)或刪除全部(不帶item參數(shù)時(shí));
### zx.maplist(key,[item],[數(shù)量],[true]);
列取集合中若干數(shù)量的 item;
item為起始項(xiàng),結(jié)果不包含此項(xiàng);數(shù)量不大于10000,不能設(shè)為負(fù)數(shù);true 表示結(jié)果中需要包含項(xiàng)時(shí)間。
* 帶前兩個(gè)參數(shù)
查詢此item 是否存在,返回true 或 false;
* 只帶key參數(shù)
如果只帶key參數(shù),則查詢并返回下一個(gè)有效key。
