(Linux)- 在 Debian11 安裝 Memcached
(Linux)- 在 Debian11 安裝 Memcached
Memcached 是免費的,開源的,高性能的,分布式內存對象的緩存係統,將最常查詢的數據保存在內存中。 這將減少數據載入時間並提供對資料庫的輕鬆訪問,加速動態 Web 應用程序。
Memcached 是一個開源的分散式內存對象緩存系統,將最常查詢的數據保存在內存中。 這將減少數據載入時間並提供對資料庫的輕鬆訪問。 可以使用 Memcached 通過減輕資料庫負載來加速動態 Web 應用程序。 它簡單、易於部署,並且可以與多種編程語言集成,包括 PHP、Python 等。
Memcached 是用 C 語言寫的。但是和 Memcached 的客戶端可以用任一種語言來連接。只要用 Memcached 通訊協定來通訊即可。但缺乏認証機制。所以必須設置在防火牆後方。因為是基於 libevent 程式庫而開發,可以在大量連接時保持效能。不會發生 C10K 問題。
一、Memcached 適同時機
1.1 適用時機:
開源
memcached 服務器是一個很大的哈希表
顯著減少數據庫負載。
非常適合高負載的數據庫網站。
在 BSD 許可下發布
從技術上來說,它是在通過 TCP 或 UDP 在服務器和客戶端之間來訪問。
1.2 不適同時機
持久性數據存儲
數據庫
特殊應用
大對象緩存
容錯或高可用性
二、Memcached 安裝
2.1 默認情況下,Memcached 包含在 Debian 11 默認存儲庫中。 可以通過運行以下命令來安裝它:
apt-get install memcached libmemcached-tools -y
2.2 安裝 Memcached 後,啟動 Memcached 服務並使其在系統重啟時啟動:
systemctl start memcached
systemctl enable memcached
2.3 還可以使用以下命令檢查 Memcached 的狀態:
systemctl status memcached
2.4 應該得到以下輸出:
? memcached.service – memcached daemon
Loaded: loaded (/lib/systemd/system/memcached.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-11-01 10:12:25 UTC; 14s ago
Docs: man:memcached(1)
Main PID: 28398 (memcached)
Tasks: 10 (limit: 4679)
Memory: 3.1M
CPU: 28ms
CGroup: /system.slice/memcached.service
??28398 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P
/var/run/memcached/memcached.pid
Nov 11 10:12:25 debian11 systemd[1]: Started memcached daemon.
2.5 修改配置文件:( 基本不太會動 )
# vim /etc/sysconfig/memcached
# cat /etc/sysconfig/memcached
PS:用 cat nano 都可以
2.6 預設情況下,Memcached 偵聽埠 11211。可以使用以下命令進行檢查:
ss -antpl | grep memcached
將獲得以下輸出:
LISTEN 0 1024 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=28398,fd=26))
2.7 配置內存緩存
Memcached 默認配置文件位於 /etc/memcached.conf。 可以使用以下命令對其進行編輯:
nano /etc/memcached.conf
也可以根據需要更改一些默認選項:
-l 127.0.0.1
-U 0
-p 11211
-u memcache
-m 2000
保存並關閉文件,然後重新啟動 Memcached 服務以應用更改:
systemctl restart memcached
三、為 PHP 和 Python 應用程序啟用 Memcached
3.1 為了在基於 PHP 的應用程序中使用 Memcached,需要將 Memcached PHP 庫安裝到伺服器上。 可以使用以下命令安裝它:
apt-get install php-memcached -y
如果要啟用 Python 和 Perl 支持,請運行以下命令:
apt-get install python3-pymemcache libcache-memcached-libmemcached-perl -y
安裝所有庫後,繼續下一步。
3.2 驗證 Memcached
Memcached 現在已安裝和配置。 現在,創建一個簡單的 PHP 腳本來驗證 Memcached。 首先,使用以下命令安裝 Apache 和 PHP:
apt-get install apache2 php libapache2-mod-php -y
安裝所有軟體包後,使用以下命令創建一個 info.php 文件:
nano /var/www/html/info.php
添加以下幾行:
<?php
$memcache = new Memcache();
$memcache->connect('10.18.44.105',11211) or die ("could not connect");
$version = $memcache->getVersion();
echo "Server's version: ".$version."<br/>\n";
$memcache->set('key','hello everybody',false,1000) or die("Failed to save data at the server"); //1000為過期時間
echo "Store data in the cache(data will expire in 1000 seconds)<br/>\n";
$get_result = $memcache->get('key');
echo "Date from the cache:<br/>\n";
var_dump($get_result);
?>
保存並關閉文件,然後打開 Web 瀏覽器並訪問 URL http://your-server-ip/info.php。 應該會在以下測試頁面上看到啟用了 Memcached:
3.3 訪問 Memcached CLI 界面
Memcached 提供了一個命令行界面,可以使用命令行直接與 Memcached 交互。
首先,使用以下命令連接到 Memcached:
telnet localhost 11211
連接後,將獲得以下輸出:
Trying ::1…
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
現在,使用以下命令檢查 Memcached 的狀態:
stats
應該會在以下輸出中看到一些重要信息,例如正常運行時間、緩存中的項目數以及與實例的客戶端連接數:
STAT pid 28398
STAT uptime 222
STAT time 1635761765
STAT version 1.6.9
STAT libevent 2.1.12-stable
STAT pointer_size 64
STAT rusage_user 0.049028
STAT rusage_system 0.049054
STAT max_connections 1024
STAT curr_connections 1
STAT total_connections 2
STAT rejected_connections 0
STAT connection_structures 2
STAT response_obj_oom 0
STAT response_obj_count 1
STAT response_obj_bytes 16384
STAT read_buf_count 2
STAT read_buf_bytes 32768
STAT read_buf_bytes_free 0
STAT read_buf_oom 0
STAT reserved_fds 20
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT cmd_touch 0
STAT cmd_meta 0
STAT get_hits 0
STAT get_misses 0
STAT get_expired 0
STAT get_flushed 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 7
STAT bytes_written 0
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT slab_reassign_rescues 0
STAT slab_reassign_chunk_rescues 0
STAT slab_reassign_evictions_nomem 0
STAT slab_reassign_inline_reclaim 0
STAT slab_reassign_busy_items 0
STAT slab_reassign_busy_deletes 0
STAT slab_reassign_running 0
STAT slabs_moved 0
STAT lru_crawler_running 0
STAT lru_crawler_starts 3
STAT lru_maintainer_juggles 272
STAT malloc_fails 0
STAT log_worker_dropped 0
STAT log_worker_written 0
STAT log_watcher_skipped 0
STAT log_watcher_sent 0
STAT unexpected_napi_ids 0
STAT round_robin_fallback 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT slab_global_page_pool 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evicted_active 0
STAT evictions 0
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
STAT moves_to_cold 0
STAT moves_to_warm 0
STAT moves_within_lru 0
STAT direct_reclaims 0
STAT lru_bumps_dropped 0
結論
恭喜
四、使用 Memcached 可以改善什麼問題?
高流量的伺服器往往會伴隨有大量的資料庫查詢。其中,資料庫的查詢又以「讀取」佔大多數。當資料庫的伺服器遇到效能瓶頸時,如果將對資料庫讀取,先以 Memcached 伺服器加以緩存,這樣子就可以有效減少資料庫伺服器的負載。
此外,對於單一的讀取動作,資料庫伺服器因為要做 SQL 查詢,會消耗較多的時間,因為讀寫到硬碟。如果該讀取動作第一次讀完之後,可以緩存在 Memcached 中,第二次之後的讀取,因為是直接自記憶體 ( RAM ) 取得資料,將會更快。
除了資料庫緩存之外。另一種常見的 Memcached 應用是用來儲存 php 的 session 資料,利用 memcached 來儲存 php 的 session,可以使負載處理器要處理的事,變得更簡單。
免責聲明:
1.本影像檔案皆從網上搜集轉載,不承擔任何技術及版權問題。
2.如有下載連結僅供寬頻測試研究用途,請下載後在24小時內刪除,請勿用於商業。
3.若侵犯了您的合法權益,請來信通知我們,我們會及時刪除,給您帶來的不便,深表歉意。