MemLink API 介紹

 

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)

 

發佈了46 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章