關於快取的一些認識

2021-08-27 16:26:11 字數 1388 閱讀 6554

一、快取的成本和收益是什麼:

既然要討論是否真的需要快取這個問題,就要知道快取帶來的成本與收益(好處、壞處)是什麼?

收益 成本

快取 + 後端儲存(資源)

1. 加速讀寫

降低後端負載

資料不一致性

**維護成本

架構複雜度

二、快取成本與收益詳解:

收益是很明顯的,通常來說乙個設計還不錯的快取系統,能夠幫助你的業務實現加速讀寫,同時幫助降低了後端負載。

(1) 加速讀寫:通常來說加速是明顯的,因為快取通常都是全記憶體的系統,而後端(可能是mysql、甚至是別人的http, rpc介面)都有速度慢和抗壓能力差的特性,通過快取的使用可以有效的提高使用者的訪問速度同時優化了使用者的體驗。

(2) 降低後端負載:通過快取的新增,如果程式沒有什麼問題,在命中率還可以的情況下,可以幫助後端減少訪問量和複雜計算(join、或者無法在優化的sql等),在很大程度降低了後端的負載。

成本:(1) 資料不一致性:無論你的設計做的多麼好,快取資料與權威資料來源(可以理解成真實或者後端資料來源)一定存在著一定時間視窗的資料不一致性,這個時間視窗的大小可大可小,具體多大還要看一下你的業務允許多大時間視窗的不一致性。

(3) 架構複雜度:加入快取後,例如加入了redis-cluster,一般來說快取不會像mysql有專門的dba,很有可能沒有專職的管理人員,所以也增加了架構的複雜度和維護成本。

具體收益:

加速讀寫

降低後端負載

複雜度:

資料不一致性

**維護成本

架構複雜度

三、如何選擇?

如果當前系統的訪問速度和訪問量能夠滿足現有的要求,就不必增加快取,其實像mysql並沒有那麼差,一台執行良好的mysql,扛個qps=1000沒什麼問題。

如果要加入選擇了快取,一定要能給出足夠的理由,不是為了簡單的show技術和想當然,最好的方法就是用資料說話:加速比有多少、後端負載降低了多少。

四、什麼樣的場景需要快取?

在公司裡,據我觀察,無論怎麼更新架構,使用各種新技術,但是80%的專案還是離不開sql的,下面我們以sql作為後端資料來源、以redis作為快取層,說一下哪些場景是需要快取的。

1、複雜開銷大的計算、降低後端負載

以mysql為例子,一些複雜的操作或者計算(例如大量聯表操作、一些分組計算),如果不加
快取,大量流量將在這些複雜計算的執行。

加速請求響應

即使單條後端資料足夠快(例如select * from table where id=?),那麼依然可以利用redis/memcache將這些操作進行merge做優化(例如:cache(select * from table where id in(id1,id10….idk))),從而優化整個io鏈的相應時間。

關於Jsoup的一些認識

jsoup是解析html的工具,使用時要匯入jsoup.jar包 獲取 的html檔案 獲取jsoup連線 connection con jsoup.connect classno 獲取document物件 document doc con.get 獲取標籤中的html內容,例如sdskd中標籤的內...

關於宗教的一些認識

來京之後,我切實感受到了宗教的存在。實驗室的乙個小夥伴,是個 徒。為了了解 教的文化活動,我參加了好幾次她所在的教會的活動。感受頗多 其一,彼此陌生的人,因為信仰,居然可以短時間內形成親密團結的氛圍,滿臉樸實 毫無警惕地敞開心懷,進行懺悔,進行交流。其二,活動的形式有歌唱讚美主,演說認識主的過程。讚...

一些關於Linux 的認識

1.linux的歷史 linux是乙個開源的作業系統,它最初是芬蘭的helsinki大學的一位年輕的學生linux torvalds作為愛好開發的。linus對minix 乙個小型的unix系統 很感興趣,並且決定開發乙個比minix更好的系統。他在1991年開始開發並且當年發布0.02版本,他堅持...