Memcached 筆記與總結(1)Linux(CentOS 6.6) 和 Windows(7)下安裝與配置 Memcached (1.4.24)與 Memcached 基礎命令

來源:互聯網
上載者:User

標籤:

Memcached 官方網站:http://memcached.org/

當前最新版本(stable 穩定版)是 1.4.24,源碼包:http://www.memcached.org/files/memcached-1.4.24.tar.gz

memcached 依賴於 libevent 庫,需要先編譯 libevent,:http://jaist.dl.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz

安裝過程:

libevent:

① 解壓

[[email protected] src]# tar -zxvf libevent-2.0.22-stable.tar.gz 

 

② 進入目錄

[[email protected] src]# cd libevent-2.0.22-stable

 

③ 配置

可以通過

[[email protected] libevent-2.0.22-stable]# ./configure -h

來查看編譯選項。

 

 配置:

[[email protected] libevent-2.0.22-stable]# ./configure --prefix=/usr/local/libevent

 

 ④ 編譯 && 安裝

[[email protected] libevent-2.0.22-stable]# make && make install

 

 

memcached

① 解壓:

[[email protected] src]# tar -zxvf memcached-1.4.24.tar.gz 

  

② 進入目錄

[[email protected] src]# cd memcached-1.4.24

 

③ 配置

[[email protected] memcached-1.4.24]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent

 

④ 編譯 && 安裝

[[email protected] memcached-1.4.24]# make && make install

 

 ⑤ 運行 memcached

[[email protected] local]# cd memcached/[[email protected] memcached]# ll總用量 12drwxr-xr-x 2 root root 4096 8月 30 01:27 bindrwxr-xr-x 3 root root 4096 8月 30 01:27 includedrwxr-xr-x 3 root root 4096 8月 30 01:27 share[[email protected] memcached]# ll bin/總用量 292-rwxr-xr-x 1 root root 298213 8月 30 01:27 memcached[[email protected] memcached]# ./bin/memcached -p 11211 -m 64 -vvvcan‘t run as root without the -u switch

出現 can‘t run as root without the -u switch 的原因是不能以 root 使用者運行 memcached

 

查看目前使用者:

[[email protected] memcached]# whoamiroot

 

解決方案,以 nobody 身份啟動 memcached:

[[email protected] memcached]# ./bin/memcached -p 11211 -m 64 -u nobody -vvv

 

可以在本地使用 telnet 串連虛擬機器上的 memcached

telnet 192.168.254.100 11211

 

如果需要 memcached 在後台執行,可以使用 

[[email protected] memcached]# ./bin/memcached -p 11211 -m 64 -u nobody -d

 

 

附:Windows(7 64位)下安裝 memcached(1.4.24)及 memcached 的常用命令

:http://wendal.net/2015/04/27.html

下載解壓,把主資料夾拷貝至任一目錄,並且重新命名為 "memcached"

 

①開啟 "cmd",進入該目錄:

 

②查看 memcached 版本和協助

D:\memcached>memcached -h

 

③ 安裝 memcached:

D:\memcached>memcached -d install

 

④ 開啟 memcached:

D:\memcached>memcached.exe -p 11211 -l 127.0.0.1 -m 64 -d start

 

或者

如果需要把錯誤資訊或者警告資訊在伺服器端輸出,可以:

D:\memcached\memcached.exe -m 64 -p 11211 -vvv

 

也就是說此時在用戶端進行的操作,伺服器端會顯示資訊:

 

 

memcached 參數說明

-p:連接埠號碼,預設11211

-l:綁定地址 ( 預設:所有都允許,無論內外網或者本機更換 IP,有安全隱患,若設定為127.0.0.1就只能本機訪問 )

-m:使用記憶體的大小,單位 mb

-d start:啟動 memcached 服務   -d restart:重起 memcached 服務   -d stop|shutdown:關閉正在啟動並執行 memcached 服務  

-c:最大同時串連數,預設是1024

-v:提示資訊(在事件迴圈中列印錯誤 / 警告資訊)-vv:詳細資料(還列印用戶端命令 / 響應)-vvv:超詳細資料(還列印內部狀態的變化)

-f:增長因子(每兩個相鄰 chunk 的大小比例),預設 1.25

 

⑤ 本機使用 telnet 進行用戶端測試:

另外開啟一個 cmd 視窗

 

使用 ctrl + ] 開啟回顯功能。

 

具體操作

添加一個KVStore for Redis:

add 文法:

add key flag expire length

flag:可以包括索引值對的整型參數,客戶機使用它儲存關於索引值對的額外資訊(如區分儲存的值是字串,或者序列化的對象等,取值時可以做相應的處理)

expire:在緩衝中儲存索引值對的時間長度(以秒為單位,0 表示不主動清除)

length:長度,以位元組為單位

 

add 已經存在的 key 是不能成功的:

 

擷取(查詢)某個鍵的值:get key

 

expire 可以是秒數(n 秒後失效),也可以是時間戳記(什麼時間失效),例如:

10 秒後失效

 

再例如目前時間戳是:1440774503

設定 100 秒後失效:

 

delete 刪除索引值

 

 

replace 替換值,參數和 add 一樣:

 

 

replace 不能對不存在的鍵進行修改:

 

set 同時具有 add 和 replace 的功能,參數和 add 一樣:

set 命令既可以修改已經存在的鍵的值,也可以增加不存在的索引值。

 

incr key n :鍵 key 的值增加 n

decr key n :鍵 key 的值減少n

注意:key 的值是 32 位無符號的數 

decr 應用情境:秒殺功能

下單時,有一系列的資料庫操作,如寫入訂單、更改庫存,還有事務要求,對於傳統關係型資料庫來說壓力很大。

而秒殺的操作,是先秒搶一個訂單號,餘下的例如個人收貨資訊填寫等操作可以不著急進行(可以憑藉該訂單號去另一個頁面慢慢下訂單、zhi‘fu)。發訂單號的操作就可以利用 memcached 的 decr 功能:

在記憶體中儲存一個索引值對 count 用來記錄庫存量,秒殺 n 件,則 count 的值是 n。秒殺時,對庫存進行 memcached 的 decr 操作,然後進行判斷返回的值,當返回的值大於 0,就說明搶單成功。當返回的值等於 0,活動結束。

也可以使用 incr 命令(秒殺 n 件,當 incr 返回的值等於 n 時,活動結束)。

由於搶單的主要操作都是在記憶體中進行,因此速度很快。

 

stats :統計

statsSTAT pid 5368  #進程號STAT uptime 3949  #持續已耗用時間STAT time 1440823276STAT version 1.4.24STAT libevent 2.0.22-stableSTAT pointer_size 32STAT rusage_user 0.202000STAT rusage_system 0.343000STAT curr_connections 10STAT total_connections 11STAT connection_structures 11STAT reserved_fds 20STAT cmd_get 4STAT cmd_set 3STAT cmd_flush 0STAT cmd_touch 0STAT get_hits 3STAT get_misses 1 # get_hits 和 get_misses 可以計算快取命中率STAT delete_misses 0STAT delete_hits 0STAT incr_misses 0STAT incr_hits 1STAT decr_misses 0STAT decr_hits 2STAT cas_misses 0STAT cas_hits 0STAT cas_badval 0STAT touch_hits 0STAT touch_misses 0STAT auth_cmds 0STAT auth_errors 0STAT bytes_read 151STAT bytes_written 172STAT limit_maxbytes 67108864STAT accepting_conns 1STAT listen_disabled_num 0STAT threads 4STAT conn_yields 0STAT hash_power_level 16STAT hash_bytes 262144STAT hash_is_expanding 0STAT malloc_fails 0STAT bytes 109STAT curr_items 2 #當前儲存的鍵的個數STAT total_items 3STAT expired_unfetched 0STAT evicted_unfetched 0STAT evictions 0STAT reclaimed 0STAT crawler_reclaimed 0STAT crawler_items_checked 0STAT lrutail_reflocked 0END

 

flush_all:清除所有的索引值。正在啟動並執行系統上慎用。

此時 stats 查看統計時,curr_items 顯示當前還有儲存的索引值,是因為到期所採用的是惰性失效機制。

 

memcached 記憶體配置機制

memcached 緩解記憶體的片段化採用 slab allocator 機制來管理記憶體:預先把記憶體劃分成若干個 slab 倉庫,每個倉庫切分成不同尺寸的小塊,需要存內容時判斷內容的大小,根據內容的大小選擇合適的倉庫。 

注意:如果有 100 Byte 的資料要儲存,但 122 Byte 大小的倉庫中的 chunk 滿了,memcached 並不會尋找更大的倉庫如 144 Byte 的倉庫來儲存該資料,而是把 122 Byte 倉庫的就資料踢掉。

 

LRU 刪除機制

memcached 的到期資料刪除機制:

當某個值到期後,並沒有從記憶體中刪除,因此 stats 統計時,curr_items 仍然有其資訊;

當取該值的時候,判斷是否到期,如果到期,返回空,並清空,此時 curr_items 就減少了;

有過之前沒有 get 過,不會自動刪除;

只有當某個新值佔用它的位置時,當成空 chunk 來佔用。

這個到期只是讓使用者看不到資料,並沒有在到期的瞬間將其從記憶體中刪除,稱之為 lazy expriation(惰性失效機制),好處是 節省了 CPU 資源和檢測的成本。

LRU:Least Recently Used 最近最少使用。不論這個最近最少使用的值是否是永久有效,當某個新值要佔據它的位置時,它都會被踢掉。

 

 

參考:

http://www.2cto.com/os/201209/153833.html

http://blog.csdn.net/zzulp/article/details/7823511

Memcached 筆記與總結(1)Linux(CentOS 6.6) 和 Windows(7)下安裝與配置 Memcached (1.4.24)與 Memcached 基礎命令

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.