天天看點

[緩存]關于memcached的詳細介紹以及用法

   很久沒用過memcached,覺得有些生疏了,現在做一次筆記,回憶一下,也為了以後更加友善的了解.

   關于memcached的曆史之類的,就不說了,不熟,也沒怎麼看過,主要就是說memcached的原理以及方式吧.筆記比較雜亂.

   memcached其實是類似于軟體的一種,它是用來為其他軟體或者服務提供一種高性能來存在的.memcache是一種高性能的分布式緩存伺服器,一般是為了通過緩存資料庫查詢的結果,減少通路的次數來提高Web的通路速度的.

   php_memcached 是 php 為 Memcached 提供的 PECL 擴充。由于 Memcached 簡單的協定規範,是以,當 Memcached推出後,就有了 PHP 的接口規範和相關擴充。

    memcached 使用了同樣的“Key=>Value”方式組織資料,但是它和共享記憶體等其他等本地緩存有非常大 的差別。Memcached 是分布式的,也就是說它不是本地的。它基于網絡連接配接(當然它也可以使用 localhost)方式完 成服務,本身它是一個獨立于應用的程式或守護程序(Daemon 方式)。

   memcached 使用 libevent 庫實作網絡連接配接服務,理論上可以處理無限多的連接配接,但是它和 Apache 不同,它更 多的時候是面向穩定的持續連接配接的,是以它實際的并發能力是有限制的。在保守情況下 memcached 的最大同時連 接數為 200,這和 Linux 線程能力有關系,這個數值是可以調整的。

   下面說說memcache指令行簡單的使用吧.

memcache啟動參數

-p  TCP端口号,預設11211

-UUDP監聽端口,預設11211,0時關閉

-l綁定位址,預設所有允許,如果設定了,

-d以daemon方式運作

-u綁定使用指定使用者運作的程序

-m允許使用記憶體,機關M(預設64)

-P将PID寫入檔案

連接配接:

telnet 127.0.0.1 11211

指令:

set向記憶體中增加鍵值對,如果存在,則替換

add向記憶體中增加鍵值對

replace如果值不存在,傳回NOT_STORED,否則替換值

get擷取值

delete删除

flush_all清空所有緩存

stats解釋:

STAT pid 22459                             程序ID

STAT uptime 1027046                        伺服器運作秒數

STAT time 1273043062                       伺服器目前unix時間戳

STAT version 1.4.4                         伺服器版本

STAT pointer_size 64                       作業系統字大小(這台伺服器是64位的)

STAT rusage_user 0.040000                  程序累計使用者時間

STAT rusage_system 0.260000                程序累計系統時間

STAT curr_connections 10                   目前打開連接配接數

STAT total_connections 82                  曾打開的連接配接總數

STAT connection_structures 13              伺服器配置設定的連接配接結構數

STAT cmd_get 54                            執行get指令總數

STAT cmd_set 34                            執行set指令總數

STAT cmd_flush 3                           指向flush_all指令總數

STAT get_hits 9                            get命中次數

STAT get_misses 45                         get未命中次數

STAT delete_misses 5                       delete未命中次數

STAT delete_hits 1                         delete命中次數

STAT incr_misses 0                         incr未命中次數

STAT incr_hits 0                           incr命中次數

STAT decr_misses 0                         decr未命中次數

STAT decr_hits 0                           decr命中次數

STAT cas_misses 0    cas未命中次數

STAT cas_hits 0                            cas命中次數

STAT cas_badval 0                          使用擦拭次數

STAT auth_cmds 0

STAT auth_errors 0

STAT bytes_read 15785                      讀取位元組總數

STAT bytes_written 15222                   寫入位元組總數

STAT limit_maxbytes 1048576                配置設定的記憶體數(位元組)

STAT accepting_conns 1                     目前接受的連結數

STAT listen_disabled_num 0                

STAT threads 4                             線程數

STAT conn_yields 0

STAT bytes 0                               存儲item位元組數

STAT curr_items 0                          item個數

STAT total_items 34                        item總數

STAT evictions 0                           為擷取空間删除item的總數

   很早之前想的一個問題,如果緩存還存在,但是資料已經更新,那麼使用者不就看不到最新的資料了麼?後來一大神給我解決,memcache可以存一個臨時的,不是永久的.或者不經常改動的資料,還有統計線上人數,或者單點登入SSO等.都可以用到memcache,那會兒很傻的以為儲存整個資料庫的資料.

   希望這些也可以給大家個思路吧.至于其他的,還沒有接觸過很多.暫時确實對memcache的深度應用不足.

本文轉自 3147972 51CTO部落格,原文連結:http://blog.51cto.com/a3147972/1401401,如需轉載請自行聯系原作者