首頁 後端開發 php教程 PHP資料庫中memcache的用法

PHP資料庫中memcache的用法

May 18, 2018 pm 02:24 PM
memcache php 資料庫

這篇文章主要介紹了PHP資料庫操作memcache用法,結合實例形式詳細分析了memcache的下載、安裝、配置及相關使用技巧,需要的朋友可以參考下

#具體如下:

在一個高並發的web應用中,資料庫存取瓶頸一直是個大問題,一旦達到某個極限,資料庫很容易崩潰,但是如果我們把常用的資料放到記憶體中,在需要的時候從記憶體中取,不光讀取速度快,而且節省資料庫IO。

memcache簡介

Memcache是​​一個高效能的分散式的記憶體物件快取系統,透過在記憶體裡維護一個統一的巨大的hash表,它能夠用來儲存各種格式的數據,包括圖像、影片、文件以及資料庫檢索的結果等。簡單的說就是將資料呼叫到記憶體中,然後從記憶體中讀取,從而大大提高讀取速度。

memcache的mem是記憶體(memory),cache是​​緩存,結合是記憶體快取的意思。當我們應用memcache時,讀取資料先從memcache內讀取,若查找不到再去資料庫裡查找,並將資料存入memcache,待下次查找時便能輕易找到。

要注意:

memcache是​​記憶體型的資料庫,因為記憶體的關閉釋放的特性,memcache也無法持久化儲存內容;
memcache內部是分塊存儲,所以大於1M的資料也無法儲存。
memcache依賴libevent函式庫,安裝前需確認已經安裝了libevent函式庫。
memcache是​​個輕量級的記憶體資料庫,只支援key-value型的儲存。
memcache中沒有關於用戶,密碼的設置,所以在配置時要配置防火牆的連接埠限制連接,以達到安全的目的。
使用repcached也能輕易實作memcache的單master單slave主從複製。

memcache的應用程式場景

儲存大量不需要持久性儲存或資料庫內已存在不會變動的資料。
讀取數據非常頻繁數據,要求小於1M。
資料型別簡單的key-value型資料。
計算好的結果和渲染後的網頁範本檔。
因其原子遞增性,可以用來計數。
因為可以設定資料過期時間的特性,儲存期限資料。不過要注意,memcache會在分配的內存不足時以最近最少使用原則(LRU)重用內存,可能會導致資訊提前被刪除。
用memcache儲存session訊息,以達到多伺服器session共享。需要設定:php.ini:

session.save_handler = memcache //设置session的储存方式为memcache 
memcache.hash_strategy = "consistent"//设置memcache的hash算法为一致性哈希算法。 
session.save_path = "tcp:/ip:port" //设置session储存的位置,多台memcache用逗号隔开。
登入後複製

#memcache伺服器的安裝





memcache的安裝簡單,伺服器可以在其官網http://www.memcached.org/下載,解壓縮後在其目錄下運行./configure -prefix=/path編譯,然後make / make test / make install 得到可以直接執行的二進位。 使用./memcached指令即可開啟伺服器,其常用參數如下:

-p port 監聽埠(預設: 11211)

-d 以後台方式執行Memcached

-u username 運行Memcached的帳戶

-m n 最大的記憶體使用, 單位是MB,預設64 MB

-c connections 最大連線數量, 預設是1024

#memcache的常用指令

用memcache客戶端或telnet連線到memcache後,就可以對memcache進行操作了。

memcache資料結構簡單,所以命令列指令也很少,下面以一個常用指令來簡析一下指令格式:

add key flags expire_time length \r\n value
登入後複製

flags:是否壓縮/序列化,通常為0。 expire_time:從儲存後多久過期。以秒(s)為單位,最大為30天的長度,超過30天的長度被視為時間戳表示"到什麼時候過期",若設為0表示永不過期。

length:value長度,輸入長度回車之後,指令列會讀取你接下來輸入的length個字元。

set key flags expire_time length  //如果有值则覆盖原值,没有则新增,add在有值时会存储失败
get key               //获取key的值
replace key flags expire_time length// 替换一个已存在的key
append/preappend key flags expire_time length// 给key的value后面/前面添加新内容。
preappend key flags expire_time length   // 给key的value前面添加新内容。
inc/dec key [n]             //key的值递增/递减1/[n]
delete key               //删除一个key
flush_all [n]              //[在n秒后]删除全部数据
stats [options]             //获取memcache[有关某一项]的详细信息
登入後複製

#########PHP的memcache擴充及應用############在https://pecl. php.net/index.php搜尋取得到所需的memcache擴充包。 ######linux系統,直接挑選版本(推薦最新stable穩定版)下載,解壓縮後在解壓縮目錄下用phpize工具產生configure文件,並用它安裝,安裝完成後在/php.ini添加extension。具體可參考前文:http://www.jb51.net/article/121314.htm。 ######windows下要點擊鏈接右邊的“windows logo DLL”鏈接,並在新打開的頁面中,按照版本、32位/64位、線程安全/非線程安全來選擇自己所需要的擴展,具體選項可以在phpinfo();頁面看到。下載完成後,將其放入phppath/ext/目錄下,然後在php.ini中新增extension=php_memcacache.dll;重新啟動伺服器完成安裝。 ###

在phpinfo()页面中看到memcache扩展后,说明安装成功,我们就可以在php脚本中使用关于memcache的类函数库了。

在手册中我们可以找到许多关于php的memcache扩展的使用,以下是一个典型的memcache使用流程。

$m=new Memcache();
$m->connect($host,$port);
$m->add($key,$value[,flags,$expire_time]);
$content=$m->get($key);
$m->close();
登入後複製

这是一个简单的memcache连接程序,在进行memcache分布式存储时,还需要用到$memcache->addServer()向memcache集群中添加服务器。

相关推荐:

ThinkPHP框架中使用Memcached缓存数据步骤详解

ThinkPHP框架中使用Memcached缓存数据的方法

php-memcached扩展安装

以上是PHP資料庫中memcache的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1226
24
PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

mysql:簡單的概念,用於輕鬆學習 mysql:簡單的概念,用於輕鬆學習 Apr 10, 2025 am 09:29 AM

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP的目的:構建動態網站 PHP的目的:構建動態網站 Apr 15, 2025 am 12:18 AM

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP的未來:改編和創新 PHP的未來:改編和創新 Apr 11, 2025 am 12:01 AM

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

See all articles