Memcached學習

一、概念
Memcached是一個開源的,高性能的內存緩存軟件,從名稱上看Mem就是內存,二cache是緩存。作用通過在事先規劃好的內存空間中臨時緩存數據庫中的各類數據,以達到減少業務對數據庫的直接高并發訪問,從而達到提升數據庫的訪問性能,加速網站集群動態應用服務的能力。
應用場景:
1、作為數據庫的前端緩存應用
a、完整緩存(易),靜態緩存
b、熱點緩存(難)
2、作業集群的session會話共享存儲

二、Memcached服務分布式集群實現
1、程序端實現,程序加載所有mc的ip列表,通過對key做hash算法
2、負載均衡器,通過對key做hash,一致哈希算法的目的是不但保證每個對象只請求一個對應的服務器,而且當節點宕機,緩存服務器的更新重新分配比例降到最低

三、Memcached服務特點及工作原理
1、完全基于內存緩存的
2、節點之間相互獨立
3、C/S模式機構、C語言編寫
4、異步I/O模型,使用libevent作為事件通知機制
5、被緩存的數據以key/value鍵值對形式存在的
6、全部數據存放于內存中,無持久性存儲的設計,重啟服務器,內存里的數據會丟失
7、當內存中的緩存的數據容量達到啟動時設定的內存值時,就自動使用LRU算法刪除過期的緩存數據
8、可以對存儲的數據設置過期時間,過期后的數據自動被清除,服務本身不會監控過期,而且在訪問的時候查看key的時間戳,判斷是否過期
9、Memcache會對設定的內存進行分開,再把塊分組,然后再提供服務

四、Memcached內存管理機制原理
利用 Slab Allocation 機制來分配和管理內存。Slab Allocation 機制原理是按照預先規定的大小,將分配給 memcached 的內存分割成特定長度的內存塊(chunk),再把尺寸相同的內存塊,分成組(chunks slab class),這些內存塊不會釋放,可以重復利用。

五、Memcached工作
Memcached 的神奇來自兩階段哈希(two-stage hash)。Memcached 就像一個巨大的、存儲了很多<key,value>對的哈希表。通過 key,可以存儲或查詢任意的數據。客戶端可以把數據存儲在多臺memcached 上。當查詢數據時,客戶端首先參考節點列表計算出 key 的哈希值(階段一哈希),進而中一個節點;客戶端將請求發送給選中的節點,然后 memcached 節點通過一個內部的哈希算法(階段二
哈希),查找真正的數據(item)。

六、Memcached最大優勢
Memcached 最大的好處就是它帶來了極佳的水平可擴展性,特別是在一個巨大的系統中。由于客戶端自己做了一次哈希,那么我們很容易增加大量 memcached到集群中。memcached 之間沒有相互通信,因此不會增加 memcached 的負載;沒有多播協議,不會網絡通信量爆炸(implode)。memcached 的集群很好用。內存不夠了?增加幾臺 memcached 吧;CPU 不夠用了?再增加幾臺吧;有多余的內存?在增加幾臺吧,不要浪費了。基于 memcached 的基本原則,可以相當輕松地構建出不同類型的緩存架構。

七、Memcached和服務器的local cache相比的優缺點
首先,local cache 有許多與上面(query cache)相同的問題。local cache 能夠利用的內存容量受到(單臺)服務器空閑內存空間的限制。不過,local cache 有一點比 memcached 和 query cache 都要好,那就是它不但可以存儲任意的數據,而且沒有網絡存取的延遲。
local cache 的數據查詢更快。考慮把 highly common 的數據放在 localcache 中吧。如果每個頁面都需要加載一些數量較少的數據,考慮把它們放在local cached 吧。
local cache 缺少集體失效(groupinvalidation)的特性。在 memcached 集群中,刪除或更新一個 key 會讓所有的觀察者覺察到。但是在local cache中, 我們只能通知所有的服務器刷新cache(很慢,不具擴展性),或者僅僅依賴緩存超時失效機制。

八、Memcached的cache機制
Memcached 主要的 cache 機制是 LRU(最近最少用)算法+超時失效。當您存數據到 memcached 中,可以指定該數據在緩存中可以呆多久 Which is forever,or some time in the future。如果 memcached 的內存不夠用了,過期的 slabs會優先被替換,接著就輪到最老的未被使用的 slabs。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213105.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213105.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213105.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【密碼學基礎】Diffie-Hellman密鑰交換協議

DH介紹 Diffie-Hellman密鑰協議算法是一種確保共享密鑰安全穿越不安全網絡的方法。 這個機制的巧妙在于需要安全通信的雙方可以用這個方法確定對稱密鑰&#xff0c;然后可以用這個密鑰進行加密和解密。 但是注意&#xff0c;這個密鑰交換協議 只能用于密鑰的交換&#xff0c;而…

Java面試題(每天10題)-------連載(45)

Dubbo篇 1、Dubbo的服務調用流程 2、Dubbo支持那種協議&#xff0c;每種協議的應用場景&#xff0c;優缺點&#xff1f; dubbo&#xff1a; 單一長連接和 NIO 異步通訊&#xff0c;適合大并發小數據量的服務調用&#xff0c;以及消費者遠大于提供者。傳輸協議 TCP&#xff0c;…

Proteus仿真--射擊小游戲仿真設計

本文介紹基于proteus射擊小游戲仿真設計&#xff08;完整仿真源文件及代碼見文末鏈接&#xff09; 仿真圖如下 K1-K4為4個按鍵&#xff0c;用于上移、下移、確認等&#xff0c;模擬單機游戲 仿真運行視頻 Proteus仿真--射擊小游戲仿真設計 附完整Proteus仿真資料代碼資料 …

ArcGIS界面顯示分辨率調整

因為電腦顯示分辨率的問題呢&#xff0c;ArcGIS的界面顯示會字體顯示不合適&#xff0c;出現模糊情況&#xff0c;這時候只需要做個簡單的操作設置一下便可以解決&#xff01; 1、右鍵ArcMap的快捷啟動方式。 2、對應選擇兼容性——>更高DPI設置——>勾選替代DPI縮放行為…

自然場景圖像中的文本檢測綜述

摘 要 本文對自然場景文本檢測問題及其方法的研究進展進行了綜述. 首先, 論述了自然場景文本的特點、自然場景文本檢測技術的研究背景、現狀以及主要技術路線. 其次, 從傳統文本檢測以及深度學習文本檢測的視角出發, 梳理、分析并比較了各類自然場景文本檢測方法的優缺點, 并介…

體系化學習運籌學基礎算法的實踐和總結

文章目錄 引言目標設計目標實踐文章匯總經驗總結一則預告 引言 眨眼間已經12月了&#xff0c;眼看著2023年馬上要過完了。 女朋友最近總說&#xff0c;工作以后感覺時間過的好快。事實上&#xff0c;我也是這么認為的。年紀越大&#xff0c;越會擔心35歲危機的降臨。所以&…

Xubuntu16.04系統中使用EDIMAX EW-7822UAC無線網卡開啟5G自發AP

目錄 1.關于 EDIMAX EW-7822UAC2.驅動安裝3.查看無線網卡信息3.通過create_ap配置5G自發AP 1.關于 EDIMAX EW-7822UAC 官網介紹 https://www.edimax.com/edimax/merchandise/merchandise_detail/data/edimax/global/wireless_adapters_ac1200_dual-band/ew-7822uac/ 詳細參數…

Python開發運維:Python項目發布到K8S集群

目錄 一、實驗 1.Python項目發布到K8S集群 一、實驗 1.Python項目發布到K8S集群 &#xff08;1&#xff09;獲取應用程序代碼 #把hello-python.tar.gz壓縮包上傳到k8s控制節點master1的root下&#xff0c;手動解壓 tar zxvf hello-python.tar.gz &#xff08;2&#xff0…

【Linux】進程周邊001之進程概念

&#x1f440;樊梓慕&#xff1a;個人主頁 &#x1f3a5;個人專欄&#xff1a;《C語言》《數據結構》《藍橋杯試題》《LeetCode刷題筆記》《實訓項目》《C》《Linux》 &#x1f31d;每一個不曾起舞的日子&#xff0c;都是對生命的辜負 目錄 前言 1.基本概念 2.描述進程-PCB…

LeetCode5.最長回文子串

昨天和之前打比賽的隊友聊天&#xff0c;他說他面百度面到這道算法題&#xff0c;然后他用暴力法解的&#xff0c;面試官讓他優化他沒優化出來&#xff0c;這道題我之前沒寫過&#xff0c;我就想看看我能不能用效率高一點的方法把它做出來&#xff0c;我一開始就在想用遞歸或者…

springboot(ssm滁州市特產銷售系統 特產商城系統Java系統

springboot(ssm滁州市特產銷售系統 特產商城系統Java系統 開發語言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服務器&#xff1a;tomcat 數據庫&#xff1a;mysql 5.7&#xff08;或8.0&#xff09; …

解決錯誤:sudo debtap -u curl: (22) The requested URL returned error: 404

具體錯誤 $ sudo debtap -u > Synchronizing pkgfile database... :: Updating 2 repos...core is up to dateextra is up to date > Synchronizing debtap database...% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload …

設計CPU功能的數字電路

實驗目的(1)熟悉Multisim 電路仿真軟件的操作界面和功能; (2)掌握邏輯電路綜合設計,并采用仿真軟件進行仿真。 實驗內容1.試設計一個簡易CPU功能的數字電路,實驗至少要求采用4個74HC/HCT194作為4個存儲單元(可以預先對存儲單元存儲數據),74HC283作為計算單元。請實現…

用相似對角矩陣加速矩陣的冪,以斐波那契數列為例

《用相似對角矩陣加速矩陣的冪&#xff0c;以斐波那契數列為例》 在計算機科學和線性代數領域&#xff0c;矩陣的冪是一個常見而重要的問題。特別是對于大型矩陣&#xff0c;直接計算冪可能會變得十分耗時。然而&#xff0c;通過相似對角矩陣的方法&#xff0c;我們能夠以更為…

多維時序 | MATLAB實現RIME-CNN-LSTM-Multihead-Attention多頭注意力機制多變量時間序列預測

多維時序 | MATLAB實現RIME-CNN-LSTM-Multihead-Attention多頭注意力機制多變量時間序列預測 目錄 多維時序 | MATLAB實現RIME-CNN-LSTM-Multihead-Attention多頭注意力機制多變量時間序列預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本介紹 MATLAB實現RIME-CNN-…

python字符串格式化--數字精度控制和快速寫法與表達式格式化

數字精度控制 我們可以使用m.n來控制數字的寬度和精度&#xff1a; m是寬度&#xff0c;設置必須為數字&#xff0c;且如果設置的數字小于本身&#xff0c;則不生效n控制小數點精度&#xff0c;必須為數字&#xff0c;會進行四舍五入 示例&#xff1a; 5d&#xff1a;是將寬…

idea本地調試hadoop 遇到的幾個問題

1.DEA對MapReduce的toString調用報錯&#xff1a;Method threw ‘java.lang.IllegalStateException‘ exception. Cannot evaluate org.apache.hadoop.mapreduc 解決方法&#xff1a;關閉 IDEA 中的啟用“ tostring() ”對象視圖 2.代碼和hdfs路徑都對的情況下&#xff0c;程序…

架構設計系列之基礎:初探軟件架構設計

11 月開始突發奇想&#xff0c;想把自己在公司內部做的技術培訓、平時的技術總結等等的內容分享出來&#xff0c;于是就開通了一個 Wechat 訂閱號&#xff08;灸哥漫談&#xff09;&#xff0c;開始同步發送內容。 今天&#xff08;12 月 10 日&#xff09;也同步在 CSDN 上開通…

文章解讀與仿真程序復現思路——電力系統自動化EI\CSCD\北大核心《面向微電網群的云儲能經濟-低碳-可靠多目標優化配置方法》

這篇文章的標題涵蓋了以下關鍵信息&#xff1a; 面向微電網群&#xff1a;研究的重點是微電網群&#xff0c;這可能指的是多個微電網系統的集合&#xff0c;而不僅僅是一個單獨的微電網。微電網是指由分布式能源資源、儲能系統和智能控制組成的小型電力系統&#xff0c;通常能夠…

記錄每日LeetCode 406.根據身高重建隊列 Java實現

題目描述&#xff1a; 假設有打亂順序的一群人站成一個隊列&#xff0c;數組 people 表示隊列中一些人的屬性&#xff08;不一定按順序&#xff09;。每個 people[i] [hi, ki] 表示第 i 個人的身高為 hi &#xff0c;前面 正好 有 ki 個身高大于或等于 hi 的人。 請你重新構…