大量的 key => value 值用什麼方式儲存?

來源:互聯網
上載者:User
有大量 key=>value 形式的值對,如:xxxx=>aaaaaaa,值一旦建立就不會更改,數量的話後期會達到百萬層級,且經常會訪問到,並發不高,但要保證資料完整。用什麼方案去存比較好?

回複內容:

有大量 key=>value 形式的值對,如:xxxx=>aaaaaaa,值一旦建立就不會更改,數量的話後期會達到百萬層級,且經常會訪問到,並發不高,但要保證資料完整。用什麼方案去存比較好?

其實把問題再問得完整一點自然就有答案了

  • 被訪問的方式,除了“經常會訪問到,並發不高”之外,訪問的形式是單key查詢還是查多條?資料是否有序?是否有類似“搜尋key首碼為foo”的需求?有“列出10個key”的需求?有“列出全部key”的需求?訪問是隨機key的還是集中在部分熱點key值?冷熱key值的比例大概怎樣?目前並發不高,是否需要考慮後期並發增加以後的方案?

  • 資料完整,是否需要備份?key增加的頻率如何?新增加的key是否立刻需要能訪問?

  • key和value的長度分別是多少?百萬條1K是一條記憶體條,可百萬條1M就是一塊磁碟了

一般而言,條件不是特別極端的話,選單redis&備份,單mysql&備份,或是mysql+redis都行,各有長短,看你想要什麼和你手裡有什麼資源來找平衡點了

PS:別忘了mysql還分ssd上的mysql和機械磁碟上的mysql,也是各有優劣的

redis 比較方便 一般放記憶體裡 也可以放硬碟

並發不高,資料庫,百萬層級單表夠了;並發高的話,前面加一層memcached

從你的需求上面主要針對兩個點:值一旦建立就不會更改,以及保證資料完整。
資料庫是跑不掉的,目前在保證資料完整性方面資料庫是首選,同時也是最通用最值得信賴的。而針對數量的話後期會達到百萬層級,且經常會訪問到,並發不高這三個點可以考慮使用記憶體資料庫提供訪問效率,如redis,資料結構使用普通的k-v結構即可。

memcached

根據key雜湊到不同的檔案中, 根據訪問量來決定要不要加一層記憶體cache

用mysql儲存,然後前面加redis做緩衝。

只是Key-Value的話,可以不用放資料庫.找一些kv型的nosql就可以用.有持久化的話,可以考慮redis,或者SSDB之類的.Nosql上可以很容易做基於key的分區來解決你的資料容量和訪問量的問題.

直接用apc吧,這樣比較簡單!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.