真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

內(nèi)存緩存軟件memcached-創(chuàng)新互聯(lián)

第1章 memcached

內(nèi)存緩存軟件 (內(nèi)存比磁盤(pán)快)

目前創(chuàng)新互聯(lián)公司已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、洛陽(yáng)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

分為服務(wù)端和客戶端

服務(wù)端 memcached

客戶端memcache

誕生的原因。

2003年誕生了memcached

web1.0 2005以前   企業(yè)提供內(nèi)容為主。

web2.0 2005-2012   企業(yè)只提供平臺(tái),用戶參與上傳和下載內(nèi)容。

目標(biāo):

解決高并發(fā)訪問(wèn)的問(wèn)題,減輕傳統(tǒng)數(shù)據(jù)庫(kù)mysql的壓力。

不關(guān)注數(shù)據(jù)可靠性,只關(guān)心高并發(fā)讀寫(xiě)。

差異化發(fā)展。

企業(yè)應(yīng)用場(chǎng)景:

1、數(shù)據(jù)庫(kù)前端的緩存

  讀數(shù)據(jù): 開(kāi)發(fā)程序從邏輯上,首先訪問(wèn)memcached。如果memcached沒(méi)有所需要的數(shù)據(jù)在訪問(wèn)mysql。

  寫(xiě)數(shù)據(jù): 如果在寫(xiě)數(shù)據(jù)庫(kù)的同時(shí),把數(shù)據(jù)庫(kù)寫(xiě)入到memcached?;蛘邔?xiě)入mysql的同時(shí),由mysyl復(fù)制到memcached。

linux運(yùn)維角色,搭建memcached服務(wù),提供服務(wù)(使用的信息問(wèn)開(kāi)發(fā))

內(nèi)存緩存軟件 memcached

2、集群后端的共享會(huì)話服務(wù)session

session門(mén)票。如果在網(wǎng)站內(nèi)有了這個(gè)門(mén)票,就可以瀏覽任意界面。

解決共享會(huì)話的方案:

1)nginx的調(diào)度算法IP_hash(缺點(diǎn):導(dǎo)致負(fù)載不均衡)

2)通過(guò)memcached做會(huì)話共享。

3)cookies(放在用戶瀏覽器端)優(yōu)點(diǎn):可以大并發(fā)。缺點(diǎn):容易篡改,不安全。

1.1搭建memcached服務(wù)端

搭建memcached服務(wù)

1、libevent(epoll模型,libevent作為事件通知機(jī)制)

yum install libevent-devel -y

rpm -qa libevent-devel

2、下載memcached

yum install memcached -y

rpm -qa memcached

3、啟動(dòng)服務(wù)并檢查

[root@db01 ~]# memcached -m 16m -c 2048 -uroot -p 11211 -d

-m 指定內(nèi)存 -c 多少訪問(wèn)連接 -u 指定用戶 -p 指定端口號(hào) -d 以守護(hù)進(jìn)程的方式

[root@db01 ~]# netstat -lntp|grep memcache

tcp       0     0 0.0.0.0:11211       0.0.0.0:*      LISTEN     4026/memcached

tcp       0     0 :::11211            :::*           LISTEN     4026/memcached

MySQL數(shù)據(jù)庫(kù)管理

Memcached管理

MySQL的insert語(yǔ)句

Memcached的set命令

MySQL的select語(yǔ)句

Memcached的get命令

MySQL的delete語(yǔ)句

Memcached的delete命令

操作Memcached的相關(guān)命令的語(yǔ)法

以下為操作Memcached的相關(guān)命令基本語(yǔ)法:

set               key     0      0         0

    \r

\r

\r

命令

說(shuō)明

command name

set無(wú)論如何都進(jìn)行寫(xiě)入數(shù)據(jù),會(huì)覆蓋老數(shù)據(jù)

add只有對(duì)應(yīng)數(shù)據(jù)不存在時(shí)才添加數(shù)據(jù)

repalce只有數(shù)據(jù)存在時(shí)進(jìn)行替換數(shù)據(jù)

append往后追加:appenddatablock?

prepend往前追加:prependdatablock

cas按版本號(hào)更改

key

普通字符串,要求小于250個(gè)字符,不包含空格和控制字符

flags

客戶端用來(lái)標(biāo)識(shí)數(shù)據(jù)格式的數(shù)值,如json、xml、壓縮等

exptime

存活時(shí)間s,0為永遠(yuǎn),小于30天,60*60*24*30為秒數(shù)

大于30天為unixtime

bytes

byte字節(jié)數(shù),不包含\r\n,根據(jù)長(zhǎng)度截取存/取的字符串,可以是0,即存空串

datablock

文本行,以\r\n結(jié)尾,當(dāng)然可以包含\r或

status

STORED/NOT_FOUND

下載telnet和 nc

yum install telnet nc -y

telnet方式

存進(jìn)去 拿出來(lái) 刪除掉

[root@web03 ~]# telnet 127.0.0.1 11211

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

set k1 0 0 6

oldboy

STORED

get k1

VALUE k1 0 6

oldboy

END

delete k1

DELETED

用nc方式

[root@web03 ~]# printf "set key008 0 06\r\noldboy\r\n"|nc 127.0.0.1 11211

STORED

用printf方式查看

printf "get key008\r\n"|nc127.0.0.1 11211

刪除

printf "delete key008\r\n"|nc127.0.0.1 11211

三種 寫(xiě)入 讀取刪除

[root@web03 ~]#printf "set key008 0 0 6\r\noldboy\r\n"|nc 127.0.0.1 11211

STORED

[root@web03 ~]# printf"get key008\r\n"|nc 127.0.0.1 11211

VALUE key008 0 6

oldboy

END

[root@web03 ~]# printf"delete key008\r\n"|nc 127.0.0.1 11211

DELETED

memcached查看幫助

memcached -h

Memcached啟動(dòng)命令相關(guān)參數(shù)

命令參數(shù)

說(shuō)明

進(jìn)程與連接設(shè)置:

-d

以守護(hù)進(jìn)程(daemon)方式運(yùn)行服務(wù)

-u

指定運(yùn)行Memcached的用戶,如果當(dāng)前用戶為root,需要使用此參數(shù)指定用戶

-l

指定Memcached進(jìn)程監(jiān)聽(tīng)的服務(wù)器IP地址,可以不設(shè)置此參數(shù)

-p(小寫(xiě))

指定Memcached服務(wù)監(jiān)聽(tīng)TCP端口號(hào),默認(rèn)為11211

-P(大寫(xiě))

設(shè)置保存Memcached的pod文件($$),保存PID到指定文件

內(nèi)存相關(guān)設(shè)置

-m

指定Memcached服務(wù)可以緩存數(shù)據(jù)的大內(nèi)存,默認(rèn)為64MB

-M

Memcached服務(wù)內(nèi)存不夠時(shí)禁止LRU,如果內(nèi)存滿了會(huì)報(bào)錯(cuò)

-f

chunk size增長(zhǎng)因予,默認(rèn)1.25

-L

啟用大內(nèi)存頁(yè),可以降低內(nèi)存浪費(fèi),改進(jìn)性能

并發(fā)連接設(shè)置

-c

大的并發(fā)連接數(shù),默認(rèn)是1024

-t

線程數(shù),默認(rèn)4.由于Memcached采用的是NIO,所以太多線程用處不大

-R

每個(gè)event大請(qǐng)求數(shù),默認(rèn)20

-C

禁用CAS(可以禁止版本計(jì)數(shù),減少開(kāi)銷)

調(diào)試參數(shù)

-v

打印較少的errors/warnings

-vv

打印非常多調(diào)試信息和錯(cuò)誤輸出到控制臺(tái),也打印客戶端命令及響應(yīng)

-vvv

打印極多的調(diào)試信息和錯(cuò)誤輸出,也打印內(nèi)部狀態(tài)轉(zhuǎn)變

1.2memcached客戶端

php所在服務(wù)器上安裝memcached客戶端,程序才能訪問(wèn)memcached

把memcache-2.2.5.tgz數(shù)據(jù)包拉到/home/oldboy/tools/

然后進(jìn)行編譯安裝

tar zxf memcache-2.2.5.tgz

cd memcache-2.2.5

/application/php/bin/phpize

./configure --enable-memcache --with-php-config=/application/php/bin/php-config

make

make install

cd ../

[root@web02 tools]# ll/application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/

total 256

-rwxr-xr-x 1 root root 258064 Jun 9 14:44 memcache.so

echo '' >/application/nginx/html/blog/a.php

[root@web02 php]# cat /application/nginx/html/blog/a.php

phpinfo();

?>

通過(guò)頁(yè)面:blog.etiantian.org/a.php檢查mc的配置情況。

配置:

vim /application/php/lib/php.ini

extension_dir ="/application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/"

extension = memcache.so

重啟Php

pkill php-fpm

/application/php/sbin/php-fpm

再次通過(guò)頁(yè)面:blog.etiantian.org/a.php檢查mc的配置情況。ctrl + F

搜索memcache頁(yè)面內(nèi)容,如果有結(jié)果,表示成功。

管理memcachedweb端

把memadmin-1.0.12.tar.gz包拉進(jìn) /home/oldboy/tools/

tar zxvfC      memadmin-1.0.12.tar.gz /application/nginx/html/blog/

進(jìn)行指定解壓

Memcached狀態(tài)信息詳細(xì)說(shuō)明

參數(shù)

描述

實(shí)際作用

pid

28123

memcache服務(wù)進(jìn)程ID

查看服務(wù)信息

uptime

20063728

服務(wù)已運(yùn)行秒數(shù)

time

1440577412

服務(wù)當(dāng)前Unix時(shí)間戳

version

1.4.4

Memcache版本

libevent

1.4.13-stable

libevent版本

pointer_size

64

操作系統(tǒng)指針大小

rusage_user

645314.961214

進(jìn)程累計(jì)用戶時(shí)間

分析占用CPU的情況

rusage_system

1134305.468357

進(jìn)程累計(jì)系統(tǒng)時(shí)間

cuur_connections

1361

當(dāng)前連接數(shù)

分析連接數(shù)情況

total_connections

18299935

Memcached運(yùn)行以來(lái)連接總數(shù)

connection_structures

12455

Memcached分配的連接結(jié)構(gòu)數(shù)量


reserved_fds

20

內(nèi)部使用的FD數(shù)


cmd_get

60424570825

get命令請(qǐng)求次數(shù)

分析命令率情況

get_hits

58105159197

get命令命中次數(shù)

get_misses

2319411628

get命令未命中次數(shù)

curr_items

24628253

當(dāng)前的對(duì)象數(shù)目

分析對(duì)象數(shù)LRU頻率

total_items

854196259

當(dāng)前存儲(chǔ)占用的字節(jié)數(shù)

evictions

7509

LRU釋放的對(duì)象數(shù)目

1.2.1Slab內(nèi)存管理機(jī)制

現(xiàn)在的Memcached是利用Slab Allocation機(jī)制來(lái)分配和管理內(nèi)存的,過(guò)程如下:

1)提前將大內(nèi)存分配大小為1MB的若干個(gè)slab,然后針對(duì)每個(gè)slab再進(jìn)行小對(duì)象填充,這個(gè)小對(duì)象稱為chunk,避免大量重復(fù)的初始化和清理,減輕了內(nèi)存管理器的負(fù)擔(dān)。

Slab Allocation 內(nèi)存分配的原理是按照預(yù)先規(guī)定的大小,將分配給Memcached服務(wù)的內(nèi)存預(yù)先分割成特定長(zhǎng)度的內(nèi)存塊(chunk),再把尺寸相同的內(nèi)存塊(chunk)分成組(chunks slab class),這些內(nèi)存塊不會(huì)釋放,可以重復(fù)利用。

2)新增數(shù)據(jù)對(duì)象存儲(chǔ)說(shuō)明。

Memcached服務(wù)器中保存著slab內(nèi)空閑chunk的列表,它會(huì)根據(jù)該列表選擇chunk,然后將數(shù)據(jù)緩存于其中。當(dāng)有數(shù)據(jù)存入時(shí),Memcached根據(jù)接收到的數(shù)據(jù)大小,選擇最合適數(shù)據(jù)大小的slab,分配一個(gè)能存下這個(gè)數(shù)據(jù)的最小內(nèi)存塊(chunk)。例如:有100字節(jié)的一個(gè)數(shù)據(jù),就會(huì)被分配存入下面的112字節(jié)的一個(gè)內(nèi)存塊中,這樣會(huì)有12字節(jié)被浪費(fèi)掉,這部分空間就不能被使用了,這也是SlabAllocator機(jī)制的一個(gè)缺點(diǎn)。

內(nèi)存緩存軟件 memcached

1.2.2數(shù)據(jù)存儲(chǔ)機(jī)制

需要被緩存的數(shù)據(jù)以key/value鍵值對(duì)的形式保存在服務(wù)器端

 內(nèi)存緩存軟件 memcached

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前題目:內(nèi)存緩存軟件memcached-創(chuàng)新互聯(lián)
鏈接分享:http://weahome.cn/article/csseod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部