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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Memcached 数据缓存系统

發布時間:2024/4/14 windows 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Memcached 数据缓存系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Memcached 數據緩存系統

?

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

Memcached是一個自由開源的,高性能,分布式內存對象緩存系統。

Memcached是一種基于內存的key-value存儲,用來存儲小塊的任意數據(字符串、對象)。這些數據可以是數據庫調用、API調用或者是頁面渲染的結果。

Memcached簡潔而強大。它的簡潔設計便于快速開發,減輕開發難度,解決了大數據量緩存的很多問題。它的API兼容大部分流行的開發語言。本質上,它是一個簡潔的key-value存儲系統。

一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性

內存管理機制:采用slab內存動態分配機制,采用lru對象清除機制。采用hash機制快速檢索。


?

Memcached服務端的安裝:

1,安裝epel-release擴展源

2.安裝:事件觸發的網絡庫.libevent libevent-devel

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

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

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

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

查看是否安裝成功

rpm -qa libevent libevent-devel nc ?memcached libmemcached

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

啟動:/etc/init.d/memcached start

查看監聽默認端口及進程:默認端口為:11211

netstat -lnp|grep memcached

ps -ef|grep memcached|grep -v grep

lsof -i :11211

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


?

文件內容如下:vim /etc/syscofig/memcached

PORT="11211"

USER="memcached"

MAXCONN="1024"

CACHESIZE="64"

OPTIONS=""

:更改內存大小為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

已經生效。

Memcached啟動參數

-d 啟動一個守護進程。

-m 分配個memcache使用的內存熟路,單位是MB

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

-l 監聽的服務器ip地址。

-p 設定memcache監聽的端口,默認11211

-c 設置最大運行的并發連接數,默認為1024.

-P設置保存Memcache的pid文件 保存pid到指定文件。

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

重啟!Ps可以查看。


?

Memcached可以同時啟動多個實例如
啟動第一個實例:memcached -m 16m -p 11211 -d -u root -c 8192

啟動第二個實例memcached -m 16m -p 11212 -d -u root -c 8192

ps -ef|grep memcache|grep -v grep

可以加入/etc/rc.local中以便下次開機啟動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

查看運行狀態命中多少數據,查看命令nc 提前我們已經安裝過了nc

查看memcached狀態

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

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

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

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

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

連接memcached進行管理 管理可用telnet ip 端口 管理也可用nc管理

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

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

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


?

Telnet 127.0.0.1 11211

添加數據set key1 0 300 2 ?(鍵名為key,0為flags標記必須為10進制整數,300過期時間s,2表示字節。)

回車顯示STORED表示存儲成功。

查看數據get key1

刪除數據delete key1

替換數值replace key1 0 300 2

退出:quit

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

Mysql與memcached的對比:

Mysql:insert ?memcached:set

Mysql:select ?memcached: get

Mysql:delete ?memcached:delete

Memcached的語法規則:

<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 ????????????????????????????進程ID

STAT uptime 1027046 ???????????????????????服務器運行秒數

STAT time 1273043062 ??????????????????????服務器當前unix時間戳

STAT version 1.4.4 ????????????????????????服務器版本

STAT libevent 2.0.21-stable

STAT pointer_size 64 ??????????????????????操作系統字大小(這臺服務器是64位的)

STAT rusage_user 0.040000 ?????????????????進程累計用戶時間

STAT rusage_system 0.260000 ???????????????進程累計系統時間

STAT curr_connections 10 ??????????????????當前打開連接數

STAT total_connections 82 ?????????????????曾打開的連接總數

STAT connection_structures 13 ?????????????服務器分配的連接結構數

STAT reserved_fds 20

STAT cmd_get 54 ???????????????????????????執行get命令總數

STAT cmd_set 34 ???????????????????????????執行set命令總數

STAT cmd_flush 3 ??????????????????????????指向flush_all命令總數

STAT get_hits 9 ???????????????????????????get命中次數

STAT get_misses 45 ????????????????????????get未命中次數

STAT delete_misses 5 ??????????????????????delete未命中次數

STAT delete_hits 1 ????????????????????????delete命中次數

STAT incr_misses 0 ????????????????????????incr未命中次數

STAT incr_hits 0 ??????????????????????????incr命中次數

STAT decr_misses 0 ????????????????????????decr未命中次數

STAT decr_hits 0 ??????????????????????????decr命中次數

STAT cas_misses 0 ?????????????????????????cas未命中次數

STAT cas_hits 0 ???????????????????????????cas命中次數

STAT cas_badval 0 ?????????????????????????使用擦拭次數

STAT touch_hits 0

STAT touch_misses 0

STAT auth_cmds 0

STAT auth_errors 0

STAT bytes_read 15785 ?????????????????????讀取字節總數

STAT bytes_written 15222 ??????????????????寫入字節總數

STAT limit_maxbytes 67108864 ??????????????分配的內存數(字節)

STAT accepting_conns 1 ????????????????????目前接受的鏈接數

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

STAT time_in_listen_disabled_us 0

STAT threads 4 ????????????????????????????線程數

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 ??????????????????????????????存儲item字節數

STAT curr_items 0 ?????????????????????????item個數

STAT total_items 34 ???????????????????????item總數

STAT expired_unfetched 0

STAT evicted_unfetched 0

STAT evictions 0 ??????????????????????????為獲取空間刪除item的總數

STAT reclaimed 0

STAT crawler_reclaimed 0

STAT crawler_items_checked 0

STAT lrutail_reflocked 0


?

stats items?命令
執行stats items,可以看到STAT items行,如果memcached存儲內容很多,那么這里也會列出很多的STAT items行。

stats slabs命令

?顯示各個slab的信息,包括chunk的大小、數目、使用情況等

flush_all命令

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

PHP連接Memcached

客戶端:安裝php的memcache擴展(lamp平臺)

?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

修改擴展路徑

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

或者直接創建測試文件內容如下vim /usr/local/php/bin/1.php

<?php

//連接Memcache Memcache

$mem = new Memcache;

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

//保存數據

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

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

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

//替換數據

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

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

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

//保存數組數據

$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>";

//刪除數據

$mem->delete('key1');

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

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

//清除所有數據

$mem->flush();

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

echo "Get key2 value: ";

print_r($val2);

echo "<br>";

//關閉連接

$mem->close();

?>

切記上面的ip設置服務器端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]#

出現如下結果表示ok。

或在站點根目錄下創建2.php vim /usr/local/apache2//index1.html

內容如下

<?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;

?>

瀏覽器測試:出現wyl wyl 表示ok。

?


?

?

Memcached實現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服務器ip端口地址即可。在apache 或nginx 站點目錄新建測試的php文件

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

內容隨便這里依然用以前的測試文件。

第二種:針對apache修改httpd.conf中對應的虛擬主機匯總添加

php_value session.save_handler “memcache”

php_value session.save_path “tcp://192.168.1.11211”

第三種:正對php 在php-fpm.conf中對應的pool中添加

php_value[session.save_handler]=memcache

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

?

測試1.可在站點配置文件下編寫info.php文件

<?php

phpinfo();

?>

保存退出。

curl 192.168.1.220 info.php 用curl 篩選或瀏覽器訪問:

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顯示數據表示ok


?

測試2.命令測試:

在站點文件下創建文件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();

?>

寫入測試內容

[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共享存儲ok


?

Memcached 兼容持久化

MemcachedBD(key-value)

Tokyo tyrant(key-value)

持久化軟件如:redis,ttserver

轉載于:https://www.cnblogs.com/wylhome/p/6076218.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。