Introduction
目前,memlink支持的客戶端庫,有c,python,php,java這四種。python,php,java客戶端實際上是利用c客戶端來做成不同語言的模塊。因此c以外語言的客戶端同樣可以達到很高的性能。
Details
C/C++
-
MemLink* memlink_create(char *host, int readport, int writeport, int timeout);
創建MemLink數據結構
host爲memlink server的ip,readport爲server端的讀端口,writeport爲server端的寫端口,timeout爲網絡操作的超時時間。單位爲秒。
錯誤返回NULL,否則爲成功
-
void memlink_destroy(MemLink *m);
銷燬MemLink數據結構,釋放資源
-
void memlink_close(MemLink *m);
關閉MemLink中的網絡連接
-
int memlink_cmd_dump(MemLink *m);
發送DUMP命令。memlink服務器端執行dump操作。
返回MEMLINK_OK表示執行成功,否則出錯
-
int memlink_cmd_clean(MemLink *m, char *key);
發送CLEAN命令。memlink會對該key下的列表進行重新排列,以去除已真實刪除的數據空洞。
-
int memlink_cmd_stat(MemLink *m, char *key, MemLinkStat *stat);
發送STAT命令。獲取對應key的一些統計信息,結果存儲到傳入的參數stat中。 MemLinkStat的結構如下:
typedef struct _memlink_stat { unsigned char valuesize; unsigned char masksize; unsigned int blocks; // all blocks unsigned int data; // all alloc data item unsigned int data_used; // all data item used unsigned int mem; // all alloc mem unsigned int mem_used; // all used mem }MemLinkStat;
其中valuesize爲value長度的字節數,masksize爲mask長度的字節數。blocks爲該key下有多少個大的數據塊(這裏稱爲block),data爲這些所有block中可以容納的value數,data_used爲實際存儲了多少個value值。mem爲所有block一共佔用的內存字節數,mem_used對應data_used所佔用的內存字節數。
-
int memlink_cmd_create(MemLink *m, char *key, int valuelen, char *maskstr);
發送CREATE命令,創建一個key。參數valuelen表示該key下的value的長度,maskstr爲value的屬性格式。該屬性格式由問號分隔的數字組成。這些數字表示對應屬性項所佔用的空間的bit數。比如4:3:1表示有三個屬性,這三個屬性分別佔用4bit,3bit,1bit。
-
int memlink_cmd_del(MemLink *m, char *key, char *value, int valuelen);
發送DEL命令。刪除一個指定key下的對應value。
-
int memlink_cmd_insert(MemLink *m, char *key, char *value, int valuelen,char *maskstr, unsigned int pos);
發送insert命令,在指定的key下插入一個value,且此value要插入到一個指定位置。maskstr爲該value的熟悉信息。格式和創建key時指定的屬性格式對應。比如創建時屬性格式爲4:3:1,那麼這裏的maskstr也只能設置三項,比如maskstr可以爲8:3:1。pos表示value要插入到列表中的哪個位置,0是列表頭部,-1是列表尾部。注意,如果pos超出了列表的範圍,也會被插入到尾部。
-
int memlink_cmd_update(MemLink *m, char *key, char *value, int valuelen, unsigned int pos);
發送UPDATE命令,更新一個value的位置。pos爲此value的新位置。
-
int memlink_cmd_mask(MemLink *m, char *key, char *value, int valuelen, char *maskstr);
發送MASK命令,修改一個value的屬性值。這裏的maskstr的格式和INSERT命令的格式一樣。
-
int memlink_cmd_tag(MemLink *m, char *key, char *value, int valuelen, int tag);
發送TAG命令,對一個value進行標記刪除或者恢復。標記刪除的value不會被真實刪除,只是該數據不再顯示。tag值爲MEMLINK_TAG_DEL表示標記刪除,爲MEMLINK_TAG_RESTOR表示恢復。
-
int memlink_cmd_range(MemLink *m, char *key, char *maskstr,unsigned int frompos, unsigned int len,MemLinkResult *result);
發送RANGE命令,獲取指定key下的某個範圍的value。frompos是獲取的開始位置,從0開始,len爲要獲取的長度。結果將寫入到result中。 MemLinkResult的結構定義如下:typedef struct _memlink_result { int count; int valuesize; int masksize; MemLinkItem *root; }MemLinkResult;其中count爲返回的結果的條數,valuesize爲value的長度(字節數),masksize爲mask的長度(字節數)。root爲返回結果的鏈表。 MemLinkItem的結構定義如下:typedef struct _memlink_item { struct _memlink_item *next; char value[256]; char mask[256]; }MemLinkItem;其中的next是鏈表的下一個節點指針,value和mask就是對應的結果值。
-
int memlink_cmd_rmkey(MemLink *m, char *key);
發送RMKEY命令,刪除一個key,以及該key下的所有value。
-
int memlink_cmd_count(MemLink *m, char *key, char *maskstr, MemLinkCount *count);
發送COUNT命令,以maskstr爲條件,統計一個key下所有可見的value,以及被標記刪除的value的數量。結果寫入到count中。MemLinkCount結構定義如下:typedef struct _memlink_count { unsigned int visible_count; unsigned int tagdel_count; }MemLinkCount;visible_count爲可見value的數量。tagdel_count爲標記刪除的value的數量。
-
void memlink_result_free(MemLinkResult *result);
釋放MemLinkResult結構中的root項的內存。
PHP
- class MemLinkClient
memlink客戶端類。
- construct($host, $readport, $writeport, $timeout)
同c版memlink_create。
- close()
同c版memlink_close
- destroy()
同c版memlink_destroy
- create($key, $valuesize, $maskformat)
同c版memlink_cmd_create。返回值爲整型,正常返回MEMLNK_OK。
- dump()
同c版memlink_dump。返回值爲整型,正常返回MEMLNK_OK。
- clean($key)
同c版memlink_cmd_clean。返回值爲整型,正常返回MEMLNK_OK。
- stat($key)
同c版memlink_cmd_stat。返回MemLinkStat對象,失敗返回null。
- stat2($key, $mstat)
同c版memlink_cmd_stat。和上一個stat方法的區別是,需要傳一個MemLinkStat對象作爲第二個參數,返回值爲整型,正常返回MEMLNK_OK。
- delete($key, $value, $valuelen)
同c版memlink_cmd_del。返回值爲整型,正常返回MEMLNK_OK。
- insert($key, $value, $valuelen, $maskstr, $pos)
同c版memlink_cmd_insert。返回值爲整型,正常返回MEMLNK_OK。
- update($key, $value, $valuelen, $pos)
同c版memlink_cmd_update。返回值爲整型,正常返回MEMLNK_OK。
- mask($key, $value, $valulen, $maskstr)
同c版memlink_cmd_mask。返回值爲整型,正常返回MEMLNK_OK。
- tag($key, $value, $valuelen, $tag)
同c版memlink_cmd_tag。返回值爲整型,正常返回MEMLNK_OK。
- range($key, $maskstr, $frompos, $len)
同c版memlink_cmd_range。返回MemLinkResult對象,失敗返回null。
- range2($key, $maskstr, $frompos, $len, $result)
同c版memlink_cmd_range。和上一個range方法的區別是,需要傳一個MemLinkResult對象作爲第二個參數,返回值爲整型,正常返回MEMLNK_OK。
- rmkey($key)
同c版memlink_cmd_rmkey。返回值爲整型,正常返回MEMLNK_OK。
- count($key, $maskstr)
同c版memlink_cmd_count。返回MemLinkCount對象,失敗返回null。
- count2($key, $maskstr, $count)
同c版memlink_cmd_count2。和上一個count方法的區別是,需要傳一個MemLinkCount對象作爲第二個參數,返回值爲整型,正常返回MEMLNK_OK。
PYTHON
- class MemLinkClient
memlink客戶端類
- init(self, host, readport, writeport, timeout)
同c版memlink_create。
- close(self)
同c版memlink_close
- destroy(self)
同c版memlink_destroy
- dump(self)
同c版memlink_dump。返回值爲整型,正常返回MEMLNK_OK。
- clean(self, key)
同c版memlink_cmd_clean。返回值爲整型,正常返回MEMLNK_OK。
- create(self, key, valuesize, maskstr)
同c版memlink_cmd_create。返回值爲整型,正常返回MEMLNK_OK。
- stat(self, key)
同c版memlink_cmd_stat。返回值爲tuple,共兩個成員。其中第一項爲整形返回值,爲MEMLINK_OK表示正常。第二項爲MemLinkStat對象。
- delete(self, key, value)
同c版memlink_cmd_delete。返回值爲整型,正常返回MEMLNK_OK。
- insert(self, key, value, maskstr, pos)
同c版memlink_cmd_insert。返回值爲整型,正常返回MEMLNK_OK。
- update(self, key, value, pos)
同c版memlink_cmd_update。返回值爲整型,正常返回MEMLNK_OK。
- mask(self, key, value, maskstr)
同c版memlink_cmd_mask。返回值爲整型,正常返回MEMLNK_OK。
- tag(self, key, value, tag)
同c版memlink_cmd_tag。返回值爲整型,正常返回MEMLNK_OK。
- range(self, key, maskstr, frompos, len)
同c版memlink_cmd_range。返回值爲tuple,共兩個成員。其中第一項爲整形返回值,爲MEMLINK_OK表示正常。第二項爲MemLinkResult對象。
- rmkey(self, key)
同c版memlink_cmd_rmkey。返回值爲整型,正常返回MEMLNK_OK。
- count(self, key, maskstr)
同c版memlink_cmd_count。返回值爲tuple,共兩個成員。其中第一項爲整形返回值,爲MEMLINK_OK表示正常。第二項爲MemLinkCount對象。
Java
- public class MemLinkClient
memlink客戶端類。說明和php版本類似。
- public MemLinkClient (String host, int readport, int writeport, int timeout)
- public void close()
- public void destroy()
- public int create(String key, int valuesize, String maskstr)
- public int dump()
- public int clean(String key)
- public MemLinkStat stat(String key)
- public int stat2(String key, MemLinkStat stat)
- public int delete(String key, String value)
- public int insert(String key, String value, String maskstr, int pos)
- public int update(String key, String value, int pos)
- public int mask(String key, String value, String maskstr)
- public int tag(String key, String value, int tag)
- public MemLinkResult range(String key, String maskstr, int frompos, int len)
- public int range2(String key, String maskstr, int frompos, int len, MemLinkResult mresult)
- public int rmkey(String key)
- public MemLinkCount count(String key, String maskstr)
- public int count2(String key, String maskstr, MemLinkCount mcount)