memcached 學習

来源:https://www.cnblogs.com/wdy1184/archive/2019/04/17/10723909.html
-Advertisement-
Play Games

memcached 是什麼 特點 協議簡單 基於 libevent 的事件處理 內置記憶體存儲方式 memcached 不互相通信的分散式 啟動 安裝 依賴 libevent 安裝命令 下載地址在這個網址上面找: "https://memcached.org/downloads" 啟動 啟動命令 $ ...


memcached

是什麼

特點

  • 協議簡單

  • 基於 libevent 的事件處理

  • 內置記憶體存儲方式

  • memcached 不互相通信的分散式

啟動

安裝

$ wget 下載地址 
$ tar zxf memcached­-版本號.tar.gz  
$ cd memcached­-版本號.tar.gz  
$ ./configure  
$ make  
$ sudo make install

啟動

  • 啟動命令 $ /usr/local/bin/memcached -­p 11211 ­m 64m -d

    -d 後臺運行 -m 運行的最大記憶體大小 -p 使用 tcp 埠預設為11211 -vv very verbose

基本命令

保存命令

add replace set

  • add

  • replace

  • set

獲取數據

  • get

  • get_multi 獲取多個數據

刪除數據

delete

第二個參數代表延遲刪除的時間。

刪除第一個參數指定的鍵的數據。第二個參數指定一個時間值,可以禁止使用同樣的鍵保存新數據。

set 函數會忽視這個時間

增一&減一

  • 原子操作

  • 不會自動賦值

  • 不會對

內部結構

記憶體分配機制

  • Slab Allocator

    • 分配的記憶體不會釋放

    • 術語

      • page 分配給 Slab 的記憶體空間,預設是 1MB。 分配給 Slab 之後根據 slab 的大小切分成 chunk。

      • chunk 用於緩存記錄的記憶體空間。

      • slab class 特定大小的 chunk 的組。

  • memcached 如何選擇 slab memcached 根據收到的數據的大小,選擇最適合數據大小的 slab(圖 2.2)。

    memcached 中保存著 slab 內空閑 chunk 的列表,根據該列表選擇 chunk,然後將數據緩存於其中。

  • 減少記憶體碎片

  • 缺點

    • 無法有效利用分配的記憶體 例如,將 100 位元組 的數據緩存到 128 位元組的 chunk 中,剩餘的 28 位元組就浪費了。
  • Growth Factor

    • 控制 slab 之間的差異,預設值為1.25 即 slab2 是 slab1 的 chunk 大小的 1.25 倍

      在之前 slab 的預設值是2

監控命令

連接

telnet 主機名 埠號

memcached-tool 使用

memcached-tool 10.0.0.5:11211 display # shows slabs

memcached-tool 10.0.0.5:11211 # same. (default is display) memcached-tool 10.0.0.5:11211 stats # shows general stats memcached-tool 10.0.0.5:11211 settings # shows settings stats memcached-tool 10.0.0.5:11211 sizes # shows sizes stats memcached-tool 10.0.0.5:11211 dump [limit] # dumps keys and values

  • 腳本如何獲得 memcached 軟體包的 scripts 目錄中有一些工具,memcached-tool 也在其中 memcached-1.5.10/scripts

可視化監控後臺

刪除機制

不過渡清除

  • 不會釋放已分配的記憶體

  • lazy expiration memcached 內部不會監視記錄是否過期,而是在 get 時查看記錄的時間戳,檢查記錄是否過期。

    memcached 不會在過期監視上耗費 CPU 時間。

空間不足

  • LRU 指定“­M”參數啟動後,記憶體用盡時 memcached 會返回錯誤。話說回來,memcached 畢竟不是存儲 器,而是緩存,所以推薦使用 LRU。

分散式

memcached 的分散式完全依賴客戶端的實現

餘數分散

一致性 hash

Consistent Hashing 如下所示:

首先求出 memcached 伺服器(節點)的哈希值,並將其配置到 0~2 32 的圓(continuum)上。然後用同樣的方法求出存儲數據的鍵的哈希值,並映射到圓上。然後從數 據映射到的位置開始順時針查找,將數據保存到找到的第一個伺服器上。如果超過 2 32 仍然找不到 伺服器,就會保存到第一臺 memcached 伺服器上。

php 庫: libketama

image-20180910203215632


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在學習彙編的時候,會需要用到debug調試程式,但是現在win10預設已經移除了這個插件,我們需要手動安裝,下麵就告訴大家如何在win10環境下安裝debug。 1:準備工具 1.1 DOSBox 1.2 debug.exe 2:安裝過程 DOSBox安裝過程:可以在官方網站下載:https://w ...
  • 雲伺服器ESC 部署vsftpd 虛擬用戶 說明:雲伺服器部署和本地伺服器部署一樣,都需要開通指定的相應埠,只不過雲伺服器需要在安全組規則中打開相應的埠允許通過。 環境說明: 對應的用戶對應不同的密碼,對應不同的數據目錄,如下圖: 具體步驟 1) 安裝軟體 2) 創建相應的ftp數據目錄 3) ...
  • LVS
    LVS 概述.V1 LVS LVS lvs是一款開源的負責均衡調度器應用,工作於傳輸層。負責把客戶端請求按調度演算法轉發只後端伺服器集群中的主機進行響應。 LVS組成 LVS組成 ipvsadm:ipvsadm是工作於用戶工作,用戶通過ipvsadm工具定義lvs的工作機制,集群,規則以及演算法。 ip ...
  • sed:文本流編輯器 主要是對文件的快速增刪改查,查詢功能中最常用的是過濾,取行 sed [選項] [sed內置命令字元] [輸入文件] Options: -n:取消預設的sed輸出,常與sed內置命令p連用 -e:直接在命令行界面進行sed動作編輯,多點編輯 -r:使用擴展的正則表達式 -i:直接 ...
  • root@VM-38-204-ubuntu:~# host baidu.com baidu.com has address 220.181.57.216 baidu.com has address 123.125.114.144 baidu.com mail is handled by 15 mx.... ...
  • grep:文本過濾工具 支持BRE egrep: 支持ERE fgrep: 不支持正則 作用:根據用戶指定的“模式”,對目標文本逐行進行匹配檢查,列印匹配到的行 模式:由正則表達式字元及文本字元所編寫的過濾條件 [OPTIONS] PATTERN [FILE...] options: -v:顯示不被 ...
  • 問題描述: 應用程式視窗能夠打開,但就是這樣一直空白,什麼都不顯示。接下來,主視窗以純白色載入,不顯示任何其他內容。 接下來主視窗背景米色載入和菜單欄載入和工作。應用程式將永遠保持這樣, 有時界面會變成黑色。打開任務管理器,會看到有一堆Postman進程正在運行。 系統Windows Server ...
  • 本文主要介紹了MongoDB及Mongoose,並通過使用Mongoose對文檔進行增刪改查操作。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...