redis-persist上線

來源:互聯網
上載者:User

標籤:http   io   os   ar   sp   檔案   資料   on   log   

九月份慘不忍睹,因為代碼品質不夠高,直接被Boss噴成了篩子。被反覆教育說要高品質的代碼,要可維護、高效能……

 

幸而,最後一周終於在緊張的加班中,灰階上線redis-land-go了,項目也改名為redis-persist,github在此。

 

之前實現的,是redis到leveldb,以及skynet從leveldb中讀取資料的介面。最後一周添加的,是SA同事可能會用到的功能。主要是:

  • dump
  • restore_one
  • restore_all
  • sync
  • sync_all
  • count
  • diff
  • keys
  • check_all
  • fast_check

這些指令可以分成三類,一類是從redis拷貝到leveldb的,比如sync開頭的指令;一類是從leveldb拷貝到redis中的,典型如restore開頭的指令;剩下的是用來檢驗兩側資料的,比如檢查一個玩家資料的diff,檢查數量的count,還有列出leveldb部分玩家uid的keys

 

這裡的fast_check是針對當前玩家儲存做的一個特殊最佳化,在leveldb中用首碼分出了一個特殊的key表,裡面是玩家uid-玩家資料version的key-value對。這個表足夠小,可以整個放進記憶體裡,所以對於只需比對資料版本號碼的情況,能夠在極短時間完成。redis和leveldb通過網路連接,不在一台機器上時,12w資料不超過1分鐘。

 

同時,折騰這套工具的時候,還順便看了一下leveldb的結構。leveldb有個sstable的概念,sstable就是記憶體裡一塊按key有序排列好的表,可以改動的時候叫memtable,準備寫入磁碟的是另一個表,叫sstable。當資料比較少的時候,層級也比較少,具體哪個ldb檔案對應哪一段key範圍,是記錄在MANIFEST裡面的。寫入的記錄,首先記入log裡,這是順序寫,所以極快。然後是定期後台整理,將sstable和磁碟上已有的ldb檔案合并,使得磁碟的資料越來越有序。

redis-persist上線

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.