資料儲存在多張表,快取維度如何設計?

Sam哥哥發表於2016-09-03

概述

為了提升介面的響應速度,通常會使用中央快取,比如增加一個memcache叢集,用於儲存熱點資料。

假設資料表是類似下面這樣的:

表b、c、d都通過一個a_id去引用a表的記錄。假設這四張表的資料需要儲存到memcache上,那麼memcache 快取維度該怎麼設計呢?是使用一個key,然後把所有記錄儲存起來呢?還是使用多個key呢?
其實都可以,根據業務場景和具體資料來決定。

使用多個key

假設你的服務介面大部分情況下只需要輸出a表和b表中的資料,那就可以使用多個key。比如說,介面需要輸出id=7對應的業務資料,那麼key這樣設計:

business_7這個key用於儲存介面最經常輸出的業務資料,也就是a表和b表的資料,c_7用於輸出c表的資料,d_7用於輸出d表的資料。這樣設計基於以下幾點:
1、c表和d表都有大欄位,而且內容也無需經常輸出,如果每次呼叫介面,不管對方要不要,都要從memcache中獲取。大家應該知道,當資料體積比較大的時候,走網路從memcache中獲取的時候,是比較慢的,會降低介面響應速度的。

2、介面呼叫方,最經常要使用的資料,是a表和b表中的資料。

備註:

不建議針對每張表,都去設計一個key,這樣做雖然粒度比較細。但是每次介面輸出資料時,都得跟memcache做很多次互動。根據我們自己的效能壓測結果,只要跟memcache互動的次數多了,介面效能立馬就下去了。

使用一個key

如果大部分外部系統都需要使用到表a、b、c、d的資料,那麼就使用一個key即可。減少跟memcache互動的次數。

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

資料儲存在多張表,快取維度如何設計?

相關文章