Memcached 基礎筆記

【筆記】 Memcache 基礎

Memcache 介紹

什麼是 Memcache

Memcache 是一套分佈式高速緩存系統,php

  • 分佈式:以在多臺操做系統中同時安裝 Memcache 服務,能夠達到很好的集羣效果。數據庫

  • 高速:Memcache 全部的數據都是維護在內存中的。vim

Memcache 有什麼用?

當應用 訪問量 特別大的時候,數據庫的訪問量也會特別大。Memcache 的出現,能夠在運用和數據庫之間增長一個緩衝層。那麼以前在數據庫中讀取過的數據在第二次讀取的時候,能夠直接去訪問 Memcache 去讀取這些數據,從而減輕數據庫的壓力。緩存

怎麼理解 Memcache?

Memcache 至關於只有一張表的數據庫。這張表有二個字段,分別是主鍵 Key,和數據 Value。Key 用來保證咱們查找值得惟一性。bash

圖片描述

Memcache 的使用場景

1. 非持久化存儲:對數據存儲要求不高

若是數據丟失也不會對系統形成太大的影響。當系統斷電或者重啓的時候,內存會被清空,以前保存在 Memcache 當中的數據也會被清空。因此只能把 Memcache 當成緩存使用,而不能把它當成真正的數據庫使用。服務器

2. 分佈式存儲:不適合單機使用

若是是單機,直接使用數據庫查找數據。Memcache 對於內存的消耗很大。
若是使用 Memcache,推薦裝在另一臺機器上,單獨做爲緩存系統。而不是把數據庫和 Memcache 裝在一臺數據庫上php7

3. key/Value 存儲:格式簡單,不支持 List ,Array 數據類型

Value 存儲的是數據的整個部分,不能再把 Value 中的數據進行拆分。架構

Memcached 安裝

Memcached 是一個 C/S 架構的緩存系統,分爲服務端的安裝和客戶端的安裝。分佈式

Memcached 服務端的安裝

編譯安裝 Libevent Memcache

若是是編譯安裝能夠指定軟件的安裝路徑,安裝過程時間長。memcached

依賴包管理安裝 apt-get、 yum

apt-get install memcached

or

yum install memcached

Memcached 服務端的啓動

/usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 150 -u root

-d:進程守護
-l:ip地址
-p:端口號
-m:分配的內存大小
-u:啓動服務的用戶

查看:ps -ef | grep memcached

Memcached 客戶端的安裝

安裝 Libmemcached

採用編譯安裝的方式

cd libmemcached-1.0.18
./configure --prefix=/usr/lib/libmemcached
meke && make install

爲 PHP 安裝 memcached 拓展

cd memcached-2.2.0
phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/lib/libmemcached --disable-memcached-sasl
make && make install
vim /etc/php/php7.0/php-fpm/php.ini
//添加
extension = memcached.so

PHP 中使用 Memcache

經常使用類

系統類 :addServer , addServers, getStatus, getVersion

數據類:add, set, delete, flush, replace, increment, get

進階類:setMulti, deleteMulti, get Multi, getResultCode, getResultMessage

addServer

public bool Memcached::addServer ( string $host , int $port [, int $weight = 0 ] )

host
memcached服務端主機名。若是主機名無效,相關的數據操做的返回代碼將被設置爲Memcached::RES_HOST_LOOKUP_FAILURE。

port
memcached服務端端口號,一般是11211。

weight
此服務器相對於服務器池中全部服務器的權重。此參數用來控制服務器在操做時被選種的機率。這個僅用於一致性 分佈選項,而且這個值一般是由服務端分配的內存來設置的。

set

public bool Memcached::set ( string $key , mixed $value [, int $expiration ] )

key
用於存儲值的鍵名。

value
存儲的值。

expiration
到期時間,默認爲 0。 更多信息請參見到期時間。

get

public mixed Memcached::get ( string $key [, callback $cache_cb [, float &$cas_token ]] )

key
要檢索的元素的key。

cache_cb
通讀緩存回掉函數或NULL.

cas_token
檢索的元素的CAS標記值。

項目中使用 Memcached

即時生成緩存

適用用 新聞詳情 文章詳情 這狀況

提早生成緩存

網站首頁 的狀況,定時腳本把緩存生成好

永久緩存

適用於 關於咱們 的狀況

相關文章
相關標籤/搜索