【山外筆記-數(shù)據(jù)庫】Memcached教程詳解

本文打印版文檔下載地址

【山外筆記-數(shù)據(jù)庫】Memcached詳解教程-打印版.pdf

一、Memcached數(shù)據(jù)庫概述

1、Memcached簡(jiǎn)介

(1)Memcached是一個(gè)自由開源的,高性能,分布式內(nèi)存對(duì)象緩存系統(tǒng),通過在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨大的hash表來存儲(chǔ)各種格式的數(shù)據(jù)。

(2)Memcached本質(zhì)上是一個(gè)基于內(nèi)存的key-value存儲(chǔ)系統(tǒng),用來存儲(chǔ)小塊的任意數(shù)據(jù)(字符串、對(duì)象)。

(3)Memcached的守護(hù)進(jìn)程(daemon )用C語言編寫,但是客戶端可以用任何語言來編寫,并通過memcached協(xié)議與守護(hù)進(jìn)程通信。

(4)Memcached是以守護(hù)程序(監(jiān)聽)方式運(yùn)行于一個(gè)或者多個(gè)服務(wù)器中,隨時(shí)會(huì)接受客戶端的連接和操作。

(5)Memcached客戶端有各種語言的版本,包括java,c,php,.net等等。

(6)Memcached通過在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來減少讀取數(shù)據(jù)庫的次數(shù),提高動(dòng)態(tài)、數(shù)據(jù)庫驅(qū)動(dòng)網(wǎng)站的速度,減輕數(shù)據(jù)庫負(fù)載。

(7)Memcached的API兼容大部分流行的開發(fā)語言,其中包括Perl、PHP、Python、RubyC#、C/C++、Lua等。

memcached02.png
2、Memcached的特點(diǎn)

(1)協(xié)議簡(jiǎn)單

(2)基于libevent的事件處理

libevent是一個(gè)將Linux的epoll、BSD類操作系統(tǒng)的kqueue等事件處理功能封裝成統(tǒng)一接口的程序庫。

(3)內(nèi)置內(nèi)存存儲(chǔ)方式

  • memcached中保存的數(shù)據(jù)都存儲(chǔ)在memcached內(nèi)置的內(nèi)存存儲(chǔ)空間中。

  • 由于數(shù)據(jù)僅存在于內(nèi)存中,因此重啟memcached、重啟操作系統(tǒng)會(huì)導(dǎo)致全部數(shù)據(jù)消失。

  • 內(nèi)存容量達(dá)到指定值之后,就基于LRU(Least Recently Used)算法自動(dòng)刪除不使用的緩存。

  • memcached本身是為緩存而設(shè)計(jì)的服務(wù)器,因此并沒有過多考慮數(shù)據(jù)的永久性問題。

(4)分布式memcached互不通信

  • memcached盡管是分布式緩存服務(wù)器,但服務(wù)器端并沒有分布式功能。

  • 各個(gè)memcached不會(huì)互相通信以共享信息。

memcached01.png
3、Memcached的工作原理:緩存式的Web應(yīng)用程序架構(gòu)

(1)在傳統(tǒng)的app層和db層之間加入cache層, 每個(gè)app服務(wù)器都可以綁定一個(gè)mc(memcached)。

(2)每次數(shù)據(jù)的讀取都可以從ms(內(nèi)置分配內(nèi)存的組件)中取得,如果沒有,再從db層讀取。

(3)當(dāng)ms的hash表滿了之后,新的插入數(shù)據(jù)會(huì)替代老的數(shù)據(jù),更新的策略是LRU(最近最少使用)+ 到期失效策略,失效數(shù)據(jù)首先被替換,然后再替換到最近未使用的數(shù)據(jù)。。

(4)當(dāng)數(shù)據(jù)要進(jìn)行更新時(shí),除了要發(fā)送update的 sql給db層,同時(shí)也要將更新的數(shù)據(jù)發(fā)給,讓mc去更新ms中的數(shù)據(jù)。

4、Memcached的安裝

(1)Linux Memcached安裝

  • Ubuntu/Debian在線安裝

    sudo apt-get install libevent ibevent-dev
    sudo apt-get install memcached
    
  • Redhat/Fedora/Centos在線安裝

    yum install libevent libevent-devel
    yum install memcached
    
  • 源代碼安裝

    wget http://memcached.org/latest                    下載最新版本
    tar -zxvf memcached-1.x.x.tar.gz                    解壓源碼
    cd memcached-1.x.x                                  進(jìn)入目錄
    ./configure --prefix=/usr/local/memcached           配置
    make && make test                                   編譯
    sudo make install                                   安裝
    

(2)Windows Memcached安裝

在 1.4.5 版本以前 Memcached可以作為一個(gè)服務(wù)安裝,而在 1.4.5 及之后的版本刪除了該功能。因此需要采用不同的安裝方式。

Memcached安裝包下載地址:https://github.com/memcached/memcached/releases

  • Memcached 1.4.5 以前的版本

  • 解壓下載的安裝包到指定目錄。

  • memcached 可以作為一個(gè)服務(wù)安裝,cmd窗口執(zhí)行

    c:\memcached\memcached.exe -d install
    
  • 啟動(dòng)和關(guān)閉 memcached 服務(wù)

    c:\memcached\memcached.exe -d start
    c:\memcached\memcached.exe -d stop
    
  • 修改 memcached 的緩存配置項(xiàng)

    c:\memcached\memcached.exe -d runservice -m 512
    
  • 查看memcached 的的幫助信息

    c:\memcached\memcached.exe -h
    
  • 卸載memcached

    c:\memcached\memcached.exe -d uninstall
    
  • Memcached 1.4.5 以后的版本

    • 解壓下載的安裝包到指定目錄。

    • memcached 不能作為服務(wù)來運(yùn)行,需要使用任務(wù)計(jì)劃中來開啟一個(gè)普通的進(jìn)程,設(shè)置開機(jī)自動(dòng)啟動(dòng)。

      schtasks /create /sc onstart /tn memcached /tr "'c:\memcached\memcached.exe' -m 512"
      
    • 刪除 memcached 的任務(wù)計(jì)劃

      schtasks /delete /tn memcached
      
5、Memcached的運(yùn)行

(1)Linux自動(dòng)安裝 memcached 命令位于 /usr/local/bin/memcached。

(2)查看Memcached命令的幫助:memcached -h

  • -d選項(xiàng):?jiǎn)?dòng)一個(gè)守護(hù)進(jìn)程;
  • -m選項(xiàng):分配給Memcached使用的內(nèi)存數(shù)量,單位是MB;
  • -u選項(xiàng):運(yùn)行Memcached的用戶;
  • -l選項(xiàng):監(jiān)聽的服務(wù)器IP地址,可以有多個(gè)地址;
  • -p選項(xiàng):設(shè)置Memcached監(jiān)聽的端口,最好是1024以上的端口;
  • -c選項(xiàng):最大運(yùn)行的并發(fā)連接數(shù),默認(rèn)是1024;
  • -P選項(xiàng):設(shè)置保存Memcached的pid文件。

(3)啟動(dòng)Memcached服務(wù)

memcached -d -m 64M -u root -l 192.168.0.120 -p 11211 -c 256 -P /tmp/memcached.pid

(4)關(guān)閉Memcached服務(wù)

ps -ef|grep memcached
kill -9 memcached_pid
6、Memcached的連接

(1)通過 telnet 命令并指定主機(jī)ip和端口來連接 Memcached 服務(wù)。

(2)語法:telnet HOST PORT

二、Memcached 存儲(chǔ)命令

1、Memcached set 命令

(1)Memcached set 命令:用于將 value(數(shù)據(jù)值) 存儲(chǔ)在指定的 key(鍵) 中。

(2)如果set的key已經(jīng)存在,該命令可以更新該key所對(duì)應(yīng)的原來的數(shù)據(jù),也就是實(shí)現(xiàn)更新的作用。

(3)set 命令的基本語法格式:

set key flags exptime bytes [noreply] 
value 

(4)參數(shù)說明:

  • key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
  • flags:可以包括鍵值對(duì)的整型參數(shù),客戶機(jī)使用它存儲(chǔ)關(guān)于鍵值對(duì)的額外信息 。
  • exptime:在緩存中保存鍵值對(duì)的時(shí)間長(zhǎng)度(以秒為單位,0 表示永遠(yuǎn))
  • bytes:在緩存中存儲(chǔ)的字節(jié)數(shù)
  • noreply(可選): 該參數(shù)告知服務(wù)器不需要返回?cái)?shù)據(jù)
  • value:存儲(chǔ)的值(始終位于第二行)(可直接理解為key-value結(jié)構(gòu)中的value)

(4)輸出信息:

  • STORED:保存成功后輸出。
  • ERROR:在保存失敗后輸出。
2、Memcached add 命令

(1)Memcached add 命令:用于將 value(數(shù)據(jù)值) 存儲(chǔ)在指定的 key(鍵) 中。

(2)如果 add 的 key 已經(jīng)存在,則不會(huì)更新數(shù)據(jù)(過期的 key 會(huì)更新),之前的值將仍然保持不變,并且獲得響應(yīng) NOT_STORED。

(3)add 命令的基本語法格式:

add key flags exptime bytes [noreply]
value

(4)參數(shù)說明和輸出信息同set命令。

3、Memcached replace 命令

(1)Memcached replace 命令:用于替換已存在的 key(鍵)value(數(shù)據(jù)值)。

(2)如果 key 不存在,則替換失敗,并且獲得響應(yīng) NOT_STORED。

(3)replace 命令的基本語法格式:

replace key flags exptime bytes [noreply]
value

(4)參數(shù)說明和輸出信息同set命令。

(5) set 、add 、replace 三個(gè)命令的區(qū)別

  • add命令:用于向 memcache 服務(wù)器添加一個(gè)要緩存的數(shù)據(jù),如果 key 存在則返回 false。

  • replace命令:用于向 memcache 服務(wù)器替換一個(gè)指定 key 的緩存內(nèi)容,如果 key 不存在則返回 false。

  • set 命令:用于設(shè)置一個(gè)指定 key 的緩存內(nèi)容,是 add 方法和 replace 方法的集合體。

4、Memcached append 命令

(1)Memcached append 命令:用于向已存在 key(鍵)value(數(shù)據(jù)值) 后面追加數(shù)據(jù)(字符串相加) 。

(2)append 命令的基本語法格式:

append key flags exptime bytes [noreply]
value

(3)參數(shù)說明同set命令。

(4)輸出信息

  • STORED:保存成功后輸出。
  • NOT_STORED:該鍵在 Memcached 上不存在。
  • CLIENT_ERROR:執(zhí)行錯(cuò)誤。
5、Memcached prepend 命令

(1)Memcached prepend 命令用于向已存在 key(鍵)value(數(shù)據(jù)值) 前面追加數(shù)據(jù) 。

(2)prepend 命令的基本語法格式:

prepend key flags exptime bytes [noreply]
value

(3)參數(shù)說明同set命令。

(4)輸出信息同append命令。

6、Memcached CAS 命令

(1)Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令:用于執(zhí)行一個(gè)"檢查并設(shè)置"的操作。

  • Memcached CAS命令僅在當(dāng)前客戶端最后一次取值后,該key 對(duì)應(yīng)的值沒有被其他客戶端修改的情況下, 才能夠?qū)⒅祵懭搿?/p>

  • 檢查是通過cas_token參數(shù)進(jìn)行的, 這個(gè)參數(shù)是Memcach指定給已經(jīng)存在的元素的一個(gè)唯一的64位值。

  • 使用 CAS 命令,需要從 Memcached 服務(wù)商通過 gets 命令獲取令牌(token)。

(2)CAS 命令的基本語法格式:

cas key flags exptime bytes unique_cas_token [noreply]
value

(3)參數(shù)說明:

  • unique_cas_token選項(xiàng):通過 gets 命令獲取的一個(gè)唯一的64位值。
  • 其他參數(shù)說明同set命令。

(4)輸出信息:

  • STORED:保存成功后輸出。
  • ERROR:保存出錯(cuò)或語法錯(cuò)誤。
  • EXISTS:在最后一次取值后另外一個(gè)用戶也在更新該數(shù)據(jù)。
  • NOT_FOUND:Memcached 服務(wù)上不存在該鍵值。

三、Memcached查找命令

1、Memcached get 命令

(1)Memcached get 命令:獲取存儲(chǔ)在 key(鍵) 中的 value(數(shù)據(jù)值) ,如果 key 不存在,則返回空。

(2)get 命令的基本語法格式如下:

get key
get key1 key2 key3      #多個(gè) key 使用空格隔開

(3)參數(shù)key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。

2、Memcached gets 命令

(1)Memcached gets 命令獲取帶有 CAS 令牌存 的 value(數(shù)據(jù)值) ,如果 key 不存在,則返回空。

(2)gets 命令的基本語法格式如下:

gets key
gets key1 key2 key3     #多個(gè) key 使用空格隔開
3、Memcached delete 命令

(1)Memcached delete 命令:用于刪除已存在的 key(鍵)。

(2)delete 命令的基本語法格式:delete key [noreply]

(3)參數(shù)說明:

  • key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
  • noreply(可選): 該參數(shù)告知服務(wù)器不需要返回?cái)?shù)據(jù)

(4)輸出信息說明:

  • DELETED:刪除成功。
  • ERROR:語法錯(cuò)誤或刪除失敗。
  • NOT_FOUND:key 不存在。
4、Memcached incr 命令

(1)Memcached incr 與 decr 命令用于對(duì)已存在的 key(鍵) 的數(shù)字值進(jìn)行自增操作。

  • incr 與 decr 命令操作的數(shù)據(jù)必須是十進(jìn)制的32位無符號(hào)整數(shù)。

  • 如果 key 不存在返回 NOT_FOUND,如果鍵的值不為數(shù)字,則返回 CLIENT_ERROR,其他錯(cuò)誤返回 ERROR。

(2)incr 命令的基本語法格式:incr key increment_value

(3)參數(shù)說明:

  • key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
  • increment_value: 增加的數(shù)值。

(4)輸出信息說明:

  • NOT_FOUND:key 不存在。
  • CLIENT_ERROR:自增值不是對(duì)象。
  • ERROR其他錯(cuò)誤,如語法錯(cuò)誤等。
5、Memcached decr 命令

(1)Memcached incr 與 decr 命令用于對(duì)已存在的 key(鍵) 的數(shù)字值進(jìn)行自減操作。

  • decr 命令操作的數(shù)據(jù)必須是十進(jìn)制的32位無符號(hào)整數(shù)。

  • 如果 key 不存在返回 NOT_FOUND,如果鍵的值不為數(shù)字,則返回 CLIENT_ERROR,其他錯(cuò)誤返回 ERROR。

(2)decr 命令的基本語法格式:decr key decrement_value

(3)參數(shù)說明:

  • key:鍵值 key-value 結(jié)構(gòu)中的 key,用于查找緩存值。
  • decrement_value: 減少的數(shù)值。

(4)輸出信息說明:

  • NOT_FOUND:key 不存在。
  • CLIENT_ERROR:自增值不是對(duì)象。
  • ERROR其他錯(cuò)誤,如語法錯(cuò)誤等。

四、Memcached 統(tǒng)計(jì)命令

1、Memcached stats 命令

(1)Memcached stats 命令用于返回統(tǒng)計(jì)信息例如 PID(進(jìn)程號(hào))、版本號(hào)、連接數(shù)等。

(2)stats 命令的基本語法格式:stats

stats
STAT pid 1162
STAT uptime 5022
STAT time 1415208270
STAT version 1.4.14
STAT libevent 2.0.19-stable
STAT pointer_size 64
STAT rusage_user 0.096006
STAT rusage_system 0.152009
STAT curr_connections 5
STAT total_connections 6
STAT connection_structures 6
STAT reserved_fds 20
STAT cmd_get 6
STAT cmd_set 4
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 4
STAT get_misses 2
STAT delete_misses 1
STAT delete_hits 1
STAT incr_misses 2
STAT incr_hits 1
STAT decr_misses 0
STAT decr_hits 1
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 262
STAT bytes_written 313
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT expired_unfetched 1
STAT evicted_unfetched 0
STAT bytes 142
STAT curr_items 2
STAT total_items 6
STAT evictions 0
STAT reclaimed 1
END

(3)狀態(tài)項(xiàng)說明:

  • pid: memcache服務(wù)器進(jìn)程ID
  • uptime:服務(wù)器已運(yùn)行秒數(shù)
  • time:服務(wù)器當(dāng)前Unix時(shí)間戳
  • version:memcache版本
  • pointer_size:操作系統(tǒng)指針大小
  • rusage_user:進(jìn)程累計(jì)用戶時(shí)間
  • rusage_system:進(jìn)程累計(jì)系統(tǒng)時(shí)間
  • curr_connections:當(dāng)前連接數(shù)量
  • total_connections:Memcached運(yùn)行以來連接總數(shù)
  • connection_structures:Memcached分配的連接結(jié)構(gòu)數(shù)量
  • cmd_get:get命令請(qǐng)求次數(shù)
  • cmd_set:set命令請(qǐng)求次數(shù)
  • cmd_flush:flush命令請(qǐng)求次數(shù)
  • get_hits:get命令命中次數(shù)
  • get_misses:get命令未命中次數(shù)
  • delete_misses:delete命令未命中次數(shù)
  • delete_hits:delete命令命中次數(shù)
  • incr_misses:incr命令未命中次數(shù)
  • incr_hits:incr命令命中次數(shù)
  • decr_misses:decr命令未命中次數(shù)
  • decr_hits:decr命令命中次數(shù)
  • cas_misses:cas命令未命中次數(shù)
  • cas_hits:cas命令命中次數(shù)
  • cas_badval:使用擦拭次數(shù)
  • auth_cmds:認(rèn)證命令處理的次數(shù)
  • auth_errors:認(rèn)證失敗數(shù)目
  • bytes_read:讀取總字節(jié)數(shù)
  • bytes_written:發(fā)送總字節(jié)數(shù)
  • limit_maxbytes:分配的內(nèi)存總大?。ㄗ止?jié))
  • accepting_conns:服務(wù)器是否達(dá)到過最大連接(0/1)
  • listen_disabled_num:失效的監(jiān)聽數(shù)
  • threads:當(dāng)前線程數(shù)
  • conn_yields:連接操作主動(dòng)放棄數(shù)目
  • bytes:當(dāng)前存儲(chǔ)占用的字節(jié)數(shù)
  • curr_items:當(dāng)前存儲(chǔ)的數(shù)據(jù)總數(shù)
  • total_items:?jiǎn)?dòng)以來存儲(chǔ)的數(shù)據(jù)總數(shù)
  • evictions:LRU釋放的對(duì)象數(shù)目
  • reclaimed:已過期的數(shù)據(jù)條目來存儲(chǔ)新數(shù)據(jù)的數(shù)目
2、Memcached stats items 命令

(1)Memcached stats items 命令用于顯示各個(gè) slab 中 item 的數(shù)目和存儲(chǔ)時(shí)長(zhǎng)(最后一次訪問距離現(xiàn)在的秒數(shù))。

(2)stats items 命令的基本語法格式:stats items

3、Memcached stats slabs 命令

(1)Memcached stats slabs 命令用于顯示各個(gè)slab的信息,包括chunk的大小、數(shù)目、使用情況等。

(2)stats slabs 命令的基本語法格式:stats slabs

4、Memcached stats sizes 命令

(1)Memcached stats sizes 命令:用于顯示所有item的大小和個(gè)數(shù)。

(2)該信息返回兩列,第一列是 item 的大小,第二列是 item 的個(gè)數(shù)。

(3)stats sizes 命令的基本語法格式:stats sizes

5、Memcached flush_all 命令

(1)Memcached flush_all 命令:用于清理緩存中的所有 key=>value(鍵=>值) 對(duì)。

(2)Memcached flush_all 命令提供了一個(gè)可選參數(shù) time,用于在制定的時(shí)間后執(zhí)行清理緩存操作。

(3)flush_all 命令的基本語法格式:flush_all [time] [noreply]

五、Memcached 應(yīng)用

1、Java 連接 Memcached 服務(wù)

使用 Java 程序連接 Memcached,需要在 classpath 中添加 Memcached jar 包。

本站 jar 包下載地址:spymemcached-2.10.3.jar。

以下程序假定 Memcached 服務(wù)的主機(jī)為 127.0.0.1,端口為 11211。

import net.spy.memcached.MemcachedClient;
import java.net.*;

public class MemcachedJava {
   public static void main(String[] args) {
      try{
         MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
         System.out.println("Connection to server sucessful.");     // 本地連接 Memcached 服務(wù)
         Future fo = mcc.set("mentest", 900, "Free Education");     // 存儲(chǔ)數(shù)據(jù)
         System.out.println("set status:" + fo.get());              // 查看存儲(chǔ)狀態(tài)
         System.out.println("mentest value in cache - " + mcc.get("mentest"));
         fo = mcc.add("mentest", 900, "memcached");                 // 添加
         System.out.println("add status:" + fo.get());              // 打印狀態(tài)
         fo = mcc.add("codingground", 900, "All Free Compilers");   // 添加新key
         System.out.println("add status:" + fo.get());              // 打印狀態(tài)
         System.out.println("codingground value in cache - " + mcc.get("codingground"));
         fo = mcc.replace("mentest", 900, "Tutorials' Library");    // 添加新的 key
         System.out.println("replace status:" + fo.get());          // 打印狀態(tài)
         System.out.println("mentest value in cache - " + mcc.get("mentest"));
         fo = mcc.append("mentest", 900, " for All");               // 對(duì)存在的key進(jìn)行數(shù)據(jù)添加操作
         System.out.println("append status:" + fo.get());           // 打印狀態(tài)
         System.out.println("mentest value in cache - " + mcc.get("codingground"));
         fo = mcc.prepend("mentest", 900, "Free ");                 // 對(duì)存在的key進(jìn)行數(shù)據(jù)添加操作
         System.out.println("prepend status:" + fo.get());          // 打印狀態(tài)
         System.out.println("mentest value in cache - " + mcc.get("codingground"));
         CASValue casValue = mcc.gets("mentest");           // 通過 gets 方法獲取 CAS token(令牌)
         System.out.println("CAS token - " + casValue);     // 輸出 CAS token(令牌) 值
         CASResponse casresp = mcc.cas("mentest", casValue.getCas(), 900, "Tutorials-Library");
         System.out.println("CAS Response - " + casresp);   // 輸出 CAS 響應(yīng)信息
         System.out.println("mentest value in cache - " + mcc.get("mentest"));
         fo = mcc.delete("mentest");                            // 對(duì)存在的key進(jìn)行數(shù)據(jù)添加操作
         System.out.println("delete status:" + fo.get());   // 打印狀態(tài)
         System.out.println("mentest value in cache - " + mcc.get("codingground"));
         System.out.println("value in cache after increment - " + mcc.incr("number", 111));
         System.out.println("value in cache after decrement - " + mcc.decr("number", 112));
         mcc.shutdown();                                            // 關(guān)閉連接    
      }catch(Exception ex){
         System.out.println( ex.getMessage() );
      }
   }
}

(1)連接操作:程序中使用 InetSocketAddress 連接 IP 為 127.0.0.1 端口 為 11211 的 memcached 服務(wù)。

(2)set 操作:mcc.set("mentest", 900, "Free Education")

(3)add 操作:mcc.add("mentest", 900, "memcached")

(4)replace 操作:mcc.replace("mentest", 900, "Tutorials' Library")

(5)append 操作:append("mentest", 900, " for All")

(6)prepend 操作:mcc.prepend("mentest", 900, "Free ")

(7)CAS 操作:mcc.cas("mentest", casValue.getCas(), 900, "Tutorials-Library")

(8)get 操作:mcc.get("mentest")

(9)gets 操作:mcc.gets("mentest")

(10)delete 操作:mcc.delete("mentest")

(11)Incr/Decr 操作:mcc.incr("number", 111)、mcc.decr("number", 112)

2、PHP 連接 Memcached 服務(wù)

(1)PHP Memcache 擴(kuò)展安裝

  • 離線安裝

    wget http://pecl.php.net/get/memcache-2.2.7.tgz               
    tar -zxvf memcache-2.2.7.tgz
    cd memcache-2.2.7
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make && make install
    
  • 在線安裝

    yum install -y php-memcached
    systemctl start httpd             //開啟apache
    systemctl start memcached         //開啟memcached
    setenforce 0
    

(2)檢查安裝結(jié)果:/usr/local/php/bin/php -m | grep memcache

(3) Memcache類

  • Memcache::add:增加一個(gè)條目到緩存服務(wù)器
  • Memcache::addServer:向連接池中添加一個(gè)memcache服務(wù)器
  • Memcache::close:關(guān)閉memcache連接
  • Memcache::connect :打開一個(gè)memcached服務(wù)端連接
  • Memcache::decrement :減小元素的值
  • Memcache::delete :從服務(wù)端刪除一個(gè)元素
  • Memcache::flush :清洗(刪除)已經(jīng)存儲(chǔ)的所有的元素
  • Memcache::get :從服務(wù)端檢回一個(gè)元素
  • Memcache::getExtendedStats :緩存服務(wù)器池中所有服務(wù)器統(tǒng)計(jì)信息
  • Memcache::getServerStatus :用于獲取一個(gè)服務(wù)器的在線/離線狀態(tài)
  • Memcache::getStats :獲取服務(wù)器統(tǒng)計(jì)信息
  • Memcache::getVersion :返回服務(wù)器版本信息
  • Memcache::increment:增加一個(gè)元素的值
  • Memcache::pconnect:打開一個(gè)到服務(wù)器的持久化連接
  • Memcache::replace :替換已經(jīng)存在的元素的值
  • Memcache::set :Store data at the server
  • Memcache::setCompressThreshold :開啟大值自動(dòng)壓縮
  • Memcache::setServerParams :運(yùn)行時(shí)修改服務(wù)器參數(shù)和狀態(tài)

(4)Memcache 函數(shù):

  • memcache_debug:轉(zhuǎn)換調(diào)試輸出的開/關(guān)

六、參考資料

1、《Memcached 教程-菜鳥教程》

2、《PHP中文手冊(cè)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容