Linux下Memcached的安裝、使用__Linux

來源:互聯網
上載者:User

Linux Distribution:Ubuntu 14

Libevent:1.4.14b

下載地址:libevent官網

Memcached:1.4.25

下載地址:memcached官網


一,安裝memcached

Memcached的安裝依賴Libevent,首先安裝Libevent:

sean@sean:~$ tar -xzf libevent-1.4.14b-stable.tar.gz sean@sean:~$ cd libevent-1.4.14b-stable/sean@sean:~/libevent-1.4.14b-stable$ sudo ./configure -prefix /usrsean@sean:~/libevent-1.4.14b-stable$ sudo makesean@sean:~/libevent-1.4.14b-stable$ sudo make installsean@sean:~/libevent-1.4.14b-stable$ sudo make clean

Libevent將會被安裝至/usr/lib下

sean@sean:/usr/lib$ cd /usr/lib/sean@sean:/usr/lib$ ll | grep libevent*Binary file libevent-1.4.so.2.2.0 matcheslibevent.la:dlname='libevent-1.4.so.2'libevent.la:library_names='libevent-1.4.so.2.2.0 libevent-1.4.so.2 libevent.so'Binary file libevent.so matches

然後安裝Memcached:

sean@sean:~$ tar -xzf memcached-1.4.25.tar.tarsean@sean:~$ cd memcached-1.4.25/sean@sean:~/memcached-1.4.25$ sudo ./configure -with-libevent=/usrsean@sean:~/memcached-1.4.25$ sudo makesean@sean:~/memcached-1.4.25$ sudo make installsean@sean:~/memcached-1.4.25$ sudo make clean

Memcached將會被安裝至/usr/local/bin下:

sean@sean:/usr/local/bin$ lltotal 544drwxr-xr-x  2 root root   4096  4月 21 21:32 ./drwxr-xr-x 10 root root   4096  2月 18 07:12 ../-rwxr-xr-x  1 root root 545998  4月 21 21:32 memcached*


二,啟動memcached服務

-m:分配給memcached的最大記憶體,以M為單位

-p:服務監聽的TCP連接埠,預設值是11211

-d:服務當做守護進程啟動

-vv:列印詳細資料

-f:增長因子,預設值是1.25,指定的值必須比1大

sean@sean:/usr/local/bin$ ./memcached -m 64 -p 9999 -d -vvsean@sean:/usr/local/bin$ slab class   1: chunk size        96 perslab   10922slab class   2: chunk size       120 perslab    8738slab class   3: chunk size       152 perslab    6898slab class   4: chunk size       192 perslab    5461slab class   5: chunk size       240 perslab    4369slab class   6: chunk size       304 perslab    3449slab class   7: chunk size       384 perslab    2730slab class   8: chunk size       480 perslab    2184slab class   9: chunk size       600 perslab    1747slab class  10: chunk size       752 perslab    1394slab class  11: chunk size       944 perslab    1110slab class  12: chunk size      1184 perslab     885slab class  13: chunk size      1480 perslab     708slab class  14: chunk size      1856 perslab     564slab class  15: chunk size      2320 perslab     451slab class  16: chunk size      2904 perslab     361slab class  17: chunk size      3632 perslab     288slab class  18: chunk size      4544 perslab     230slab class  19: chunk size      5680 perslab     184slab class  20: chunk size      7104 perslab     147slab class  21: chunk size      8880 perslab     118slab class  22: chunk size     11104 perslab      94slab class  23: chunk size     13880 perslab      75slab class  24: chunk size     17352 perslab      60slab class  25: chunk size     21696 perslab      48slab class  26: chunk size     27120 perslab      38slab class  27: chunk size     33904 perslab      30slab class  28: chunk size     42384 perslab      24slab class  29: chunk size     52984 perslab      19slab class  30: chunk size     66232 perslab      15slab class  31: chunk size     82792 perslab      12slab class  32: chunk size    103496 perslab      10slab class  33: chunk size    129376 perslab       8slab class  34: chunk size    161720 perslab       6slab class  35: chunk size    202152 perslab       5slab class  36: chunk size    252696 perslab       4slab class  37: chunk size    315872 perslab       3slab class  38: chunk size    394840 perslab       2slab class  39: chunk size    493552 perslab       2slab class  40: chunk size    616944 perslab       1slab class  41: chunk size    771184 perslab       1slab class  42: chunk size   1048576 perslab       1<26 server listening (auto-negotiate)<27 server listening (auto-negotiate)<28 send buffer was 212992, now 268435456<32 send buffer was 212992, now 268435456<31 server listening (udp)<35 server listening (udp)<30 server listening (udp)<34 server listening (udp)<29 server listening (udp)<33 server listening (udp)<28 server listening (udp)<32 server listening (udp)

從日誌資訊中,我們可以瞭解到很多東西

首先就是memcached的記憶體管理機制,memcached會將記憶體分為數個大小相等的slab,每個slab又按固定大小分成數個chunk,隨著slab編號的增加,slab中chunk的大小按一定比率增長

從日誌中可以看到,memcached將記憶體分為了42個大小均為1M的slab,而每個slab又分為大小相同的數個chunk,比如slab1中每個chunk的大小為120B,slab1中總共有8738個這樣的chunk,而slab42中每個chunk的大小為1M,所以slab42中只能有一個chunk,隨著slab編號的增加,slab中chunk的大小按1.25的比率增長(slab1:120,slab2:150,150/120=1.25,正好是-f指定的增長因子的預設值)

slab5中每個chunk的大小為240B,當我要存放200B的資料時,則會選擇slab5中的一個chunk存放資料,如果slab5中的chunk都被使用了怎麼辦。沒關係,找到一個最近最少使用(LRU:least recently used)的chunk,將新資料存入其中,即使slab6中有閒置chunk,因此當memcached中儲存資料的大小基本一致時,增長因子過大將導致memcahed的記憶體使用量率並不是很高

查看進程探索服務啟動成功:

sean@sean:/usr/local/bin$ ps -ef|grep memcachedsean      17944   8981  0 21:28 ?        00:00:00 ./memcached -m 64 -p 9999 -u root -d -vvvsean      17951  14900  0 21:28 pts/15   00:00:00 grep --color=auto memcached


三,基本memcached命令

由於memcached服務監聽9999連接埠,我們可以通過telnet的方式串連至memcached

sean@sean:~$ telnet 127.0.0.1 9999Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.

之後可以通過輸入相應的命令進行操作

新增:add key flag expire length

add name 1 0 4seanSTORED

flag必須為一個正整數,將對象、數組序列化後存入緩衝,當需要取出時,還需還原序列化,這時可根據flag的值進行相應的還原序列化,比如flag的值是1,不需要還原序列化,值為2,還原序列化對象,值為3,還原序列化數組

length為緩衝的位元組長度

查詢:get key

get nameVALUE name 1 4seanEND

刪除:delete key

delete nameDELETED

替換(key必須存在才能替換):replace key flag expire length

設定(key不存在執行新增,key存在執行替換):set key flag expire length

查看狀態:stat

statsSTAT pid 18178STAT uptime 1160STAT time 1463495507STAT version 1.4.25STAT libevent 1.4.14b-stableSTAT pointer_size 64STAT rusage_user 0.000000STAT rusage_system 0.040000STAT curr_connections 10STAT total_connections 11STAT connection_structures 11STAT reserved_fds 20STAT cmd_get 6STAT cmd_set 7STAT cmd_flush 0STAT cmd_touch 0STAT get_hits 4STAT get_misses 2STAT delete_misses 0STAT delete_hits 2STAT incr_misses 0STAT incr_hits 0STAT decr_misses 0STAT decr_hits 0STAT cas_misses 0STAT cas_hits 0STAT cas_badval 0STAT touch_hits 0STAT touch_misses 0STAT auth_cmds 0STAT auth_errors 0STAT bytes_read 264STAT bytes_written 203STAT limit_maxbytes 67108864STAT accepting_conns 1STAT listen_disabled_num 0STAT time_in_listen_disabled_us 0STAT threads 4STAT conn_yields 0STAT hash_power_level 16STAT hash_bytes 524288STAT hash_is_expanding 0STAT malloc_fails 0STAT bytes 73STAT curr_items 1STAT total_items 6STAT expired_unfetched 0STAT evicted_unfetched 0STAT evictions 0STAT reclaimed 0STAT crawler_reclaimed 0STAT crawler_items_checked 0STAT lrutail_reflocked 0END

通過get_hits/(get_hits + get_misses)能夠計算出快取命中率

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.