中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

內存緩存軟件 memcached

發布時間:2020-05-28 10:40:51 來源:網絡 閱讀:678 作者:lsy950109 欄目:數據庫

第1章 memcached

內存緩存軟件 (內存比磁盤快)

分為服務端和客戶端

服務端 memcached

客戶端memcache

 

誕生的原因。

2003年誕生了memcached

web1.0 2005以前    企業提供內容為主。

web2.0 2005-2012    企業只提供平臺,用戶參與上傳和下載內容。

目標:

解決高并發訪問的問題,減輕傳統數據庫mysql的壓力。

不關注數據可靠性,只關心高并發讀寫。

 

差異化發展。

 

企業應用場景:

1、數據庫前端的緩存

   讀數據: 開發程序從邏輯上,首先訪問memcached。如果memcached沒有所需要的數據在訪問mysql

   寫數據: 如果在寫數據庫的同時,把數據庫寫入到memcached。或者寫入mysql的同時,由mysyl復制到memcached

linux運維角色,搭建memcached服務,提供服務(使用的信息問開發)

內存緩存軟件 memcached

2、集群后端的共享會話服務session

session門票。如果在網站內有了這個門票,就可以瀏覽任意界面。

解決共享會話的方案:

1)nginx的調度算法IP_hash(缺點:導致負載不均衡)

2)通過memcached做會話共享。

3)cookies(放在用戶瀏覽器端)優點:可以大并發。缺點:容易篡改,不安全。

 

 

 

1.1搭建memcached服務端

搭建memcached服務

1libeventepoll模型,libevent作為事件通知機制)

yum install libevent-devel -y

rpm -qa libevent-devel

2、下載memcached

yum install memcached -y

rpm -qa memcached

3、啟動服務并檢查

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

-m 指定內存 -c 多少訪問連接  -u 指定用戶 -p 指定端口號 -d 以守護進程的方式

[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數據庫管理

Memcached管理

MySQLinsert語句

Memcachedset命令

MySQLselect語句

Memcachedget命令

MySQLdelete語句

Memcacheddelete命令

 

操作Memcached的相關命令的語法

以下為操作Memcached的相關命令基本語法:

set                key     0       0         0

<command name>  <key> <flags> <exptime>  <bytes>\r\n

<datablock>\r\n

<status>\r\n

 

命令

說明

command name

set無論如何都進行寫入數據,會覆蓋老數據

add只有對應數據不存在時才添加數據

repalce只有數據存在時進行替換數據

append往后追加:append<key>datablock<status>?

prepend往前追加:prepend<key>datablock<status>

cas按版本號更改

key

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

flags

客戶端用來標識數據格式的數值,如jsonxml、壓縮等

exptime

存活時間s0為永遠,小于30天,60*60*24*30為秒數

大于30天為unixtime

bytes

byte字節數,不包含\r\n,根據長度截取存/取的字符串,可以是0,即存空串

datablock

文本行,以\r\n結尾,當然可以包含\r\n

status

STORED/NOT_FOUND

 

下載telnet nc

yum install telnet nc -y

 

telnet方式

存進去 拿出來 刪除掉

[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

三種 寫入 讀取刪除

[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

以守護進程(daemon)方式運行服務

-u

指定運行Memcached的用戶,如果當前用戶為root,需要使用此參數指定用戶

-l

指定Memcached進程監聽的服務器IP地址,可以不設置此參數

-p(小寫)

指定Memcached服務監聽TCP端口號,默認為11211

-P(大寫)

設置保存Memcachedpod文件($$),保存PID到指定文件

內存相關設置

-m

指定Memcached服務可以緩存數據的最大內存,默認為64MB

-M

Memcached服務內存不夠時禁止LRU,如果內存滿了會報錯

-f

chunk size增長因予,默認1.25

-L

啟用大內存頁,可以降低內存浪費,改進性能

并發連接設置

-c

最大的并發連接數,默認是1024

-t

線程數,默認4.由于Memcached采用的是NIO,所以太多線程用處不大

-R

每個event最大請求數,默認20

-C

禁用CAS(可以禁止版本計數,減少開銷)

調試參數

-v

打印較少的errors/warnings

-vv

打印非常多調試信息和錯誤輸出到控制臺,也打印客戶端命令及響應

-vvv

打印極多的調試信息和錯誤輸出,也打印內部狀態轉變

 

 

 

1.2memcached客戶端

php所在服務器上安裝memcached客戶端,程序才能訪問memcached

 

memcache-2.2.5.tgz數據包拉到/home/oldboy/tools/

 

然后進行編譯安裝

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 '<?php phpinfo(); ?>' >/application/nginx/html/blog/a.php

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

<?php

phpinfo();

?>

通過頁面: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

 

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

搜索memcache頁面內容,如果有結果,表示成功。

 

 

管理memcachedweb

memadmin-1.0.12.tar.gz包拉進 /home/oldboy/tools/

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

進行指定解壓

 

Memcached狀態信息詳細說明

參數

描述

實際作用

pid

28123

memcache服務進程ID

查看服務信息

uptime

20063728

服務已運行秒數

time

1440577412

服務當前Unix時間戳

version

1.4.4

Memcache版本

libevent

1.4.13-stable

libevent版本

pointer_size

64

操作系統指針大小

rusage_user

645314.961214

進程累計用戶時間

分析占用CPU的情況

rusage_system

1134305.468357

進程累計系統時間

cuur_connections

1361

當前連接數

分析連接數情況

total_connections

18299935

Memcached運行以來連接總數

connection_structures

12455

Memcached分配的連接結構數量


reserved_fds

20

內部使用的FD


cmd_get

60424570825

get命令請求次數

分析命令率情況

get_hits

58105159197

get命令命中次數

get_misses

2319411628

get命令未命中次數

curr_items

24628253

當前的對象數目

分析對象數LRU頻率

total_items

854196259

當前存儲占用的字節數

evictions

7509

LRU釋放的對象數目

 

 

1.2.1Slab內存管理機制

現在的Memcached是利用Slab Allocation機制來分配和管理內存的,過程如下:

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

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

2)新增數據對象存儲說明。

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

內存緩存軟件 memcached

1.2.2數據存儲機制

需要被緩存的數據以key/value鍵值對的形式保存在服務器端

 

 內存緩存軟件 memcached

 

 

 

 

 

 

 

 

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉田县| 安顺市| 汾西县| 洛阳市| 吉木萨尔县| 梧州市| 唐山市| 石首市| 郸城县| 临湘市| 博兴县| 醴陵市| 密云县| 锦屏县| 永兴县| 宜兰县| 辰溪县| 吴堡县| 兰西县| 平塘县| 中宁县| 洛宁县| 蓬安县| 和硕县| 林口县| 嘉善县| 通山县| 上高县| 宁陵县| 泰安市| 北海市| 龙门县| 海林市| 定州市| 宁陕县| 昭平县| 建宁县| 蒙阴县| 加查县| 厦门市| 景宁|