(Linux)- 在 Debian11 安裝 Memcached

(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.若侵犯了您的合法權益,請來信通知我們,我們會及時刪除,給您帶來的不便,深表歉意。



發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *