日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Memcached 数据缓存系统

發(fā)布時(shí)間:2024/4/14 windows 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Memcached 数据缓存系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Memcached 數(shù)據(jù)緩存系統(tǒng)

?

常用命令及使用:http://www.cnblogs.com/wayne173/p/5652034.html

Memcached是一個(gè)自由開源的,高性能,分布式內(nèi)存對(duì)象緩存系統(tǒng)。

Memcached是一種基于內(nèi)存的key-value存儲(chǔ),用來存儲(chǔ)小塊的任意數(shù)據(jù)(字符串、對(duì)象)。這些數(shù)據(jù)可以是數(shù)據(jù)庫調(diào)用、API調(diào)用或者是頁面渲染的結(jié)果。

Memcached簡潔而強(qiáng)大。它的簡潔設(shè)計(jì)便于快速開發(fā),減輕開發(fā)難度,解決了大數(shù)據(jù)量緩存的很多問題。它的API兼容大部分流行的開發(fā)語言。本質(zhì)上,它是一個(gè)簡潔的key-value存儲(chǔ)系統(tǒng)。

一般的使用目的是,通過緩存數(shù)據(jù)庫查詢結(jié)果,減少數(shù)據(jù)庫訪問次數(shù),以提高動(dòng)態(tài)Web應(yīng)用的速度、提高可擴(kuò)展性

內(nèi)存管理機(jī)制:采用slab內(nèi)存動(dòng)態(tài)分配機(jī)制,采用lru對(duì)象清除機(jī)制。采用hash機(jī)制快速檢索。


?

Memcached服務(wù)端的安裝:

1,安裝epel-release擴(kuò)展源

2.安裝:事件觸發(fā)的網(wǎng)絡(luò)庫.libevent libevent-devel

3.安裝:連接memcached的工具nc(查看工具

4.安裝memcached,libmemcached(客戶端工具包可以不按照)當(dāng)然memcached也有自動(dòng)工具memcached-tool,也可查看。

通過yum源安裝即可,提前按照epel擴(kuò)展源

yum install -y libevent libevent-devel nc ?memcached libmemcached

查看是否安裝成功

rpm -qa libevent libevent-devel nc ?memcached libmemcached

查看命令路徑:which memcached 為:/usr/bin/memcached

啟動(dòng):/etc/init.d/memcached start

查看監(jiān)聽默認(rèn)端口及進(jìn)程:默認(rèn)端口為:11211

netstat -lnp|grep memcached

ps -ef|grep memcached|grep -v grep

lsof -i :11211

相關(guān)參數(shù)如端口等.在/etc/init.d/memcached啟動(dòng)文件中或/etc/syscofig/memcached配置文件中定義。注釋:只有更改/etc/sysconfig/memcached文件才生效。


?

文件內(nèi)容如下:vim /etc/syscofig/memcached

PORT="11211"

USER="memcached"

MAXCONN="1024"

CACHESIZE="64"

OPTIONS=""

:更改內(nèi)存大小為128M CACHESIZE="128" 重啟

[root@bogon ~]# ps -aux|grep mem

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root ???????843 ?0.0 ?0.0 ?????0 ????0 ? ???????S ???04:10 ??0:00 [vmmemctl]

496 ???????2818 ?0.0 ?0.0 330844 ??988 ? ???????Ssl ?04:51 ??0:00 memcached -d -p 11211 -u memcached -m 128?-c 1024 -P /var/run/memcached/memcached.pid

root ??????2852 ?0.0 ?0.0 103252 ??876 pts/1 ???S+ ??04:54 ??0:00 grep mem

已經(jīng)生效。

Memcached啟動(dòng)參數(shù)

-d 啟動(dòng)一個(gè)守護(hù)進(jìn)程。

-m 分配個(gè)memcache使用的內(nèi)存熟路,單位是MB

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

-l 監(jiān)聽的服務(wù)器ip地址。

-p 設(shè)定memcache監(jiān)聽的端口,默認(rèn)11211

-c 設(shè)置最大運(yùn)行的并發(fā)連接數(shù),默認(rèn)為1024.

-P設(shè)置保存Memcache的pid文件 保存pid到指定文件。

默認(rèn)沒有指定ip,如果設(shè)置可以在配置文件中設(shè)置OPTIONS="-l 127.0.0.1"

重啟!Ps可以查看。


?

Memcached可以同時(shí)啟動(dòng)多個(gè)實(shí)例如
啟動(dòng)第一個(gè)實(shí)例:memcached -m 16m -p 11211 -d -u root -c 8192

啟動(dòng)第二個(gè)實(shí)例memcached -m 16m -p 11212 -d -u root -c 8192

ps -ef|grep memcache|grep -v grep

可以加入/etc/rc.local中以便下次開機(jī)啟動(dòng)tail -2 /etc/rc.local

/usr/bin/memcached -m 16m -p 11211 -d -u root -c 8192

/usr/bin/memcached -m 16m -p 11211 -d -u root -c 8192

查看運(yùn)行狀態(tài)命中多少數(shù)據(jù),查看命令nc 提前我們已經(jīng)安裝過了nc

查看memcached狀態(tài)

用自帶工具查看:memcached-tool?127.0.0.1:11211 stats

查看此工具由那個(gè)包安裝的:rpm -qf `which memcached-tool` 由:memcached包安裝的。

查看比較多的有:get_hits命中了多少cmd_get總請(qǐng)求多少?等...通過此值可以算出命中率多少,最好不要第一百分之80.

nc命令查看echo stats|nc 127.0.0.1 11211?和上面顯示一致。

用:memstat --servers=127.0.0.1:11211 libmemcached包安裝的

連接memcached進(jìn)行管理 管理可用telnet ip 端口 管理也可用nc管理

新手可以按照memadmin php工具第三方軟件管理(memadmin-1.0.12.tar.gz)下載解壓后將Memadmin 移動(dòng)至站點(diǎn)根目錄。注:必須支持php。

mv memadmin /usr/local/apache2/htdocs 下瀏覽器訪問:

新手管理還是比較方便的。呵呵。


?

Telnet 127.0.0.1 11211

添加數(shù)據(jù)set key1 0 300 2 ?(鍵名為key,0為flags標(biāo)記必須為10進(jìn)制整數(shù),300過期時(shí)間s,2表示字節(jié)。)

回車顯示STORED表示存儲(chǔ)成功。

查看數(shù)據(jù)get key1

刪除數(shù)據(jù)delete key1

替換數(shù)值replace key1 0 300 2

退出:quit

查看memcached chunks等,占用大小:memcached-tool 127.0.0.1:11211 display。

Mysql與memcached的對(duì)比:

Mysql:insert ?memcached:set

Mysql:select ?memcached: get

Mysql:delete ?memcached:delete

Memcached的語法規(guī)則:

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

\r\n在windows是Enter


?

緩存管理命令

stats 顯示信息同上memcached-tool?127.0.0.1:11211 stats

STAT pid 22459 ????????????????????????????進(jìn)程ID

STAT uptime 1027046 ???????????????????????服務(wù)器運(yùn)行秒數(shù)

STAT time 1273043062 ??????????????????????服務(wù)器當(dāng)前unix時(shí)間戳

STAT version 1.4.4 ????????????????????????服務(wù)器版本

STAT libevent 2.0.21-stable

STAT pointer_size 64 ??????????????????????操作系統(tǒng)字大小(這臺(tái)服務(wù)器是64位的)

STAT rusage_user 0.040000 ?????????????????進(jìn)程累計(jì)用戶時(shí)間

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

STAT curr_connections 10 ??????????????????當(dāng)前打開連接數(shù)

STAT total_connections 82 ?????????????????曾打開的連接總數(shù)

STAT connection_structures 13 ?????????????服務(wù)器分配的連接結(jié)構(gòu)數(shù)

STAT reserved_fds 20

STAT cmd_get 54 ???????????????????????????執(zhí)行g(shù)et命令總數(shù)

STAT cmd_set 34 ???????????????????????????執(zhí)行set命令總數(shù)

STAT cmd_flush 3 ??????????????????????????指向flush_all命令總數(shù)

STAT get_hits 9 ???????????????????????????get命中次數(shù)

STAT get_misses 45 ????????????????????????get未命中次數(shù)

STAT delete_misses 5 ??????????????????????delete未命中次數(shù)

STAT delete_hits 1 ????????????????????????delete命中次數(shù)

STAT incr_misses 0 ????????????????????????incr未命中次數(shù)

STAT incr_hits 0 ??????????????????????????incr命中次數(shù)

STAT decr_misses 0 ????????????????????????decr未命中次數(shù)

STAT decr_hits 0 ??????????????????????????decr命中次數(shù)

STAT cas_misses 0 ?????????????????????????cas未命中次數(shù)

STAT cas_hits 0 ???????????????????????????cas命中次數(shù)

STAT cas_badval 0 ?????????????????????????使用擦拭次數(shù)

STAT touch_hits 0

STAT touch_misses 0

STAT auth_cmds 0

STAT auth_errors 0

STAT bytes_read 15785 ?????????????????????讀取字節(jié)總數(shù)

STAT bytes_written 15222 ??????????????????寫入字節(jié)總數(shù)

STAT limit_maxbytes 67108864 ??????????????分配的內(nèi)存數(shù)(字節(jié))

STAT accepting_conns 1 ????????????????????目前接受的鏈接數(shù)

STAT listen_disabled_num 0 ???????????????

STAT time_in_listen_disabled_us 0

STAT threads 4 ????????????????????????????線程數(shù)

STAT conn_yields 0

STAT hash_power_level 16

STAT hash_bytes 524288

STAT hash_is_expanding 0

STAT malloc_fails 0

STAT conn_yields 0

STAT bytes 0 ??????????????????????????????存儲(chǔ)item字節(jié)數(shù)

STAT curr_items 0 ?????????????????????????item個(gè)數(shù)

STAT total_items 34 ???????????????????????item總數(shù)

STAT expired_unfetched 0

STAT evicted_unfetched 0

STAT evictions 0 ??????????????????????????為獲取空間刪除item的總數(shù)

STAT reclaimed 0

STAT crawler_reclaimed 0

STAT crawler_items_checked 0

STAT lrutail_reflocked 0


?

stats items?命令
執(zhí)行stats items,可以看到STAT items行,如果memcached存儲(chǔ)內(nèi)容很多,那么這里也會(huì)列出很多的STAT items行。

stats slabs命令

?顯示各個(gè)slab的信息,包括chunk的大小、數(shù)目、使用情況等

flush_all命令

flush_all 僅用于清理緩存中的所有名稱/值對(duì)。如果您需要將緩存重置到干凈的狀態(tài),則 flush_all 能提供很大的用處。

PHP連接Memcached

客戶端:安裝php的memcache擴(kuò)展(lamp平臺(tái))

?memcache在php中編譯

# ?wget http://www.lishiming.net/data/attachment/forum/memcache-2.2.3.tgz

# tar zxvf memcache-2.2.3.tgz

# cd memcache-2.2.3

# /usr/local/php/bin/phpize

# ./configure --with-php-config=/usr/local/php/bin/php-config

# make

# make install

# cp modules/memcache.so /usr/local/php/ext/ ??//把memcache.so 拷貝至php的extension_dir下,#查看php extension_dir的方法是 ?/usr/local/php/bin/php -i |grep extension_dir

修改擴(kuò)展路徑

mkdir /usr/local/php/ext

php.ini中修改:

extension_dir = "/usr/local/php/ext"

然后在php.ini 中添加

extension = memcache.so

下載測試頁面:

curl www.apelearn.com/study_v2/.memcache.txt>1.php 2>/dev/null

或者直接創(chuàng)建測試文件內(nèi)容如下vim /usr/local/php/bin/1.php

<?php

//連接Memcache Memcache

$mem = new Memcache;

$mem->connect("192.168.1.105", 11211);

//保存數(shù)據(jù)

$mem->set('key1', 'This is first value', 0, 60);

$val = $mem->get('key1');

echo "Get key1 value: " . $val ."<br>";

//替換數(shù)據(jù)

$mem->replace('key1', 'This is replace value', 0, 60);

$val = $mem->get('key1');

echo "Get key1 value: " . $val . "<br>";

//保存數(shù)組數(shù)據(jù)

$arr = array('aaa', 'bbb', 'ccc', 'ddd');

$mem->set('key2', $arr, 0, 60);

$val2 = $mem->get('key2');

echo "Get key2 value: ";

print_r($val2);

echo "<br>";

//刪除數(shù)據(jù)

$mem->delete('key1');

$val = $mem->get('key1');

echo "Get key1 value: " . $val . "<br>";

//清除所有數(shù)據(jù)

$mem->flush();

$val2 = $mem->get('key2');

echo "Get key2 value: ";

print_r($val2);

echo "<br>";

//關(guān)閉連接

$mem->close();

?>

切記上面的ip設(shè)置服務(wù)器端ip。

/usr/local/php/bin/php 1.php

[root@localhost bin]# /usr/local/php/bin/php 1.php

Get key1 value: This is first value<br>Get key1 value: This is replace value<br>Get key2 value: Array

(

????[0] => aaa

????[1] => bbb

????[2] => ccc

????[3] => ddd

)

<br>Get key1 value: <br>Get key2 value: <br>[root@localhost bin]#

出現(xiàn)如下結(jié)果表示ok。

或在站點(diǎn)根目錄下創(chuàng)建2.php vim /usr/local/apache2//index1.html

內(nèi)容如下

<?php

$memcache = new Memcache;

$memcache->connect( '192.168.1.105', 11211 ) or die ( "Could not connect Mc server" );

$memcache->set ( 'key','wyl wyl' );

$get= $memcache->get ( 'key' );

echo $get;

?>

瀏覽器測試:出現(xiàn)wyl wyl 表示ok。

?


?

?

Memcached實(shí)現(xiàn)session共享

?

php配置中分為lamp和lnmp 兩者的配置是不一樣的。在客戶端lamp或者lnmpphp配置文件中修改php文件如下:

第一種:修改php配置文件

session.save_handler = files

session.save_path = "/tmp" --》

session.save_handler = memcache

session.save_path = "tcp://192.168.1.105:11211"

ip 端口改為memcache服務(wù)器ip端口地址即可。在apache 或nginx 站點(diǎn)目錄新建測試的php文件

vim /usr/local/apache2/htdocs/index3.php

內(nèi)容隨便這里依然用以前的測試文件。

第二種:針對(duì)apache修改httpd.conf中對(duì)應(yīng)的虛擬主機(jī)匯總添加

php_value session.save_handler “memcache”

php_value session.save_path “tcp://192.168.1.11211”

第三種:正對(duì)php 在php-fpm.conf中對(duì)應(yīng)的pool中添加

php_value[session.save_handler]=memcache

php_value[session.save_path] = “tcp://192.168.1.105:11211”

?

測試1.可在站點(diǎn)配置文件下編寫info.php文件

<?php

phpinfo();

?>

保存退出。

curl 192.168.1.220 info.php 用curl 篩選或?yàn)g覽器訪問:

session.referer_check

no value

no value

session.save_handler

memcache

memcache

session.save_path

tcp://192.168.1.105:11211

tcp://192.168.1.105:11211

session.serialize_handler

php

php

session.upload_progress.cleanup

On

On

session.save_handler和_path顯示數(shù)據(jù)表示ok


?

測試2.命令測試:

在站點(diǎn)文件下創(chuàng)建文件session.php文件

<?php

session_start();

if (!isset($_SESSION['TEST'])) {

$_SESSION['TEST'] = time();

}

$_SESSION['TEST3'] = time();

print $_SESSION['TEST'];

print "<br><br>";

print $_SESSION['TEST3'];

print "<br><br>";

print session_id();

?>

寫入測試內(nèi)容

[root@localhost htdocs]# telnet 192.168.1.105 11211

Trying 192.168.1.105...

Connected to 192.168.1.105.

Escape character is '^]'.

flush_all

OK

[root@localhost ~]# curl 192.168.1.220/session.php

1479421282<br><br>1479421282<br><br>0onfdgvsgvpuev63k5qn74e993

[root@localhost htdocs]# telnet 192.168.1.105 11211

Trying 192.168.1.105...

Connected to 192.168.1.105.

Escape character is '^]'.

flush_all

OK

get 0onfdgvsgvpuev63k5qn74e993

VALUE 0onfdgvsgvpuev63k5qn74e993 0 37

TEST|i:1479421282;TEST3|i:1479421282;

END

Memcached sesson共享存儲(chǔ)ok


?

Memcached 兼容持久化

MemcachedBD(key-value)

Tokyo tyrant(key-value)

持久化軟件如:redis,ttserver

轉(zhuǎn)載于:https://www.cnblogs.com/wylhome/p/6076218.html

總結(jié)

以上是生活随笔為你收集整理的Memcached 数据缓存系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。