C 快取 理解隨記

2022-05-26 03:18:11 字數 1299 閱讀 8036

快取:為了快速獲取結果,在第一次獲取資料後存起來,下次直接用

快取依託記憶體,系統重啟後,快取會重啟

快取究竟用在**?

1會重複請求,2資料相對穩定 3 耗時,耗資源4 體積不大

配置檔案,選單--許可權,省市區,類別資料,熱搜(二八原則),分頁(只要資料不是經常變),

公告,技能屬性,資料字典

如果乙個資料快取一次,能被有效的查詢4次,就是值得的

(大型系統的時候,為了效能,為了壓力,更多快取)

快取一般是會有延遲的,這個很難避免,因為快取的本質決定了是使用上一次的結果

快取本身是共享的,應該是唯一的

本地快取空間小,不能跨程序共享

小專案可以隨意快取

中大型不夠用的,一般會用分布式快取

一旦資料修改怎麼處理?

1、乙個使用者許可權----使用者-角色-選單 查詢比較麻煩,也很頻繁,相對穩定,所以為每個使用者快取乙個

假如修改了某個使用者的角色, 快取資料的其實失效了

這時只有某乙個資料的許可權資料失效,則remove掉

remove不是update的原因:快取只是乙個臨時儲存,不是資料來源

2、刪除乙個選單,會影響一大批使用者,

若:選單-角色-使用者,然後拼裝出全部的key,然後遍歷刪除?- - 成本太高,快取應該是提公升效能

若:全部刪除 ,removeall ,會誤刪別的快取,造成快取穿透

想:清楚跟選單有關的資料

在key裡做文章,把快取資料分類

只要快取跟選單有關的額資料都加上_menu_

想:只刪除那乙個menuid ,--不可能,控制不了那麼細緻

3、定時作業更新了資料---遠端介面更新了資料,更多的時候是我們不知道資料變了

給系統提供了乙個介面,更新資料也來通知下系統(能解決少量場景)

快取是沿用上一次的結果,根本不會去資料來源的----肯定有誤差

可以做一下過期,加個時間有效性,資料延遲來換取效能,需要抉擇

只要在有效期內,不管資料來源有沒有變化,都以快取為準

只要超過有效期,不管資料來源有沒有變化,都去重新獲取

主動清理:只要是過期,最多超過10分鐘,一定會被清理

被動清理:除非我們去訪問這條快取,才會去清理,任何過期的資料,都不可以被查到

4、自定義快取

多執行緒併發了,插入資料,刪除,查詢會不會衝突?? 肯定會的

加鎖,基本全部環節都是需要lock的,操作並不是很耗時間但是鎖很耗時間

執行緒安全的字段concurrentdictionary 多執行緒操作時候不衝突,內部實現了鎖的

如果要執行緒安全,對一塊記憶體的操作,必須是單執行緒的

訊息佇列 理解隨記

一直以來總能聽到訊息佇列這個詞,今天想要記錄一下我的理解,訊息佇列 message queue 1 理解定義 首先想起乙個內容叫做佇列 queue 這個在我頭疼的資料結構中很常見的東西,其實簡單來說就是先進先出,而訊息佇列就是要把傳輸的資料放在這個佇列中。2 理解作用 1 解耦 開發時的解耦就是降低...

C語言隨記

1.c11 c語言新標準 2.表示系統自帶的庫,也可寫成 h 表示使用者自定義的庫 3.main函式是c語言的程式入口,現在大多為int main 而不是void main 4.記憶裡的c語言新特性 5.原始檔 通過編輯器建立的檔案,包含源 通常是.c檔案 6.c語言程式 編輯程式 c或.cpp 編...

《C和指標》隨記

前陣子花兩周時間又把 c和指標 過了一遍,陸陸續續做了些筆記,現總結如下。1.eof是乙個int型數值。2.去除某段 將其注釋掉不是乙個好選擇,更高效 安全的辦法是使用 if endf if 0 statements endif3.在c語言中,陣列引數是以引用形式進行傳遞的,也就是傳址呼叫,而標量和...