21.5-21.8 memcachedコマンドライン、エクスポートとインポート、PHP接続memcached、ストレージセッション
9037 ワード
21.5 memcachedコマンドライン
データの作成
telnetコマンドでmemcachedデータベースに接続する
#データの書き込み
これは0 30がすでに存在するため、誤った例です.
ストレージステータスの検出
#get key値で表示
#有効期限が定義され、有効期限が切れているため、get keyにはデータが表示されません.
Memcached構文規則
\r\r
注意:rはwindowsの下でEnterキーです
set,add,replace
setは、該当するデータを格納し、ない場合は増加し、ある場合は上書きすることを示す
addは、対応するデータの追加を示しますが、すでに存在する場合は操作に失敗します.
replaceは、対応する置換データを表しますが、存在しない場合は操作に失敗します.
クライアントがデータを保存する必要があるkey
は、16ビットの符号なし整数(10進数で表される)です.このフラグは、格納する必要があるデータとともに格納され、クライアントgetデータのときに返されます.クライアントは、このフラグをサーバにとって不透明な特殊な用途として使用できます.
期限切れの時間です.0の場合は、格納されたデータがいつまでも期限切れにならないことを示します(ただし、サーバアルゴリズム:LRUなどに置き換えられます).0以外の場合(unix時間またはこの時点からの秒数)、期限が切れた場合、サーバは、ユーザがデータを取得できないことを保証することができます(サーバ時間を基準とします).
必要なバイト数は、ユーザーが空のデータを格納したい場合に0にすることができます.
保存する内容が必要で、入力が完了すると、最後にクライアントは終了フラグとしてr(Enterを直接クリック)を追加する必要があります.
Memcachedデータの例
21.6 memcachedデータのエクスポートとインポート
mamcached-toolコマンドでデータエクスポートインポートを実現
1まずtelnetでmemcachedデータベースに入ってテストデータを作成する
2 telnetを終了:ctrl+]
^] ctrl+]
telnet>quit入力quitコマンド終了
Connection closed.終了
3 memcachedステータスの表示
ここでcmd_set:16は作成したばかりのデータ項目数です
delete_hits:2削除したばかりの項目
4データのエクスポート
リダイレクト操作を行わないとプレビュー効果が表示されます
エクスポートを指定したファイルにリダイレクト
5ファイルからデータベースをインポート
データの作成
yum install -y telnet
telnetコマンドでmemcachedデータベースに接続する
telnet 127.0.0.1 11211
#データの書き込み
set key2 0 30 2
12
STORED
これは0 30がすでに存在するため、誤った例です.
set key 0 30 3
12
CLIENT_ERROR bad data chunk
ERROR
ストレージステータスの検出
#get key値で表示
get key
END
get key2
END
#有効期限が定義され、有効期限が切れているため、get keyにはデータが表示されません.
Memcached構文規則
\r\r
注意:rはwindowsの下でEnterキーです
set,add,replace
setは、該当するデータを格納し、ない場合は増加し、ある場合は上書きすることを示す
addは、対応するデータの追加を示しますが、すでに存在する場合は操作に失敗します.
replaceは、対応する置換データを表しますが、存在しない場合は操作に失敗します.
クライアントがデータを保存する必要があるkey
は、16ビットの符号なし整数(10進数で表される)です.このフラグは、格納する必要があるデータとともに格納され、クライアントgetデータのときに返されます.クライアントは、このフラグをサーバにとって不透明な特殊な用途として使用できます.
期限切れの時間です.0の場合は、格納されたデータがいつまでも期限切れにならないことを示します(ただし、サーバアルゴリズム:LRUなどに置き換えられます).0以外の場合(unix時間またはこの時点からの秒数)、期限が切れた場合、サーバは、ユーザがデータを取得できないことを保証することができます(サーバ時間を基準とします).
必要なバイト数は、ユーザーが空のデータを格納したい場合に0にすることができます.
保存する内容が必要で、入力が完了すると、最後にクライアントは終了フラグとしてr(Enterを直接クリック)を追加する必要があります.
Memcachedデータの例
set key3 1 100 4
abcd
STORED
get key3
VALUE key3 1 4
abcd
END
replace key3 1 200 5
abcdx
STORED
get key3
VALUE key3 1 5
abcdx
END
delete key3
DELETED
get key3
END
21.6 memcachedデータのエクスポートとインポート
mamcached-toolコマンドでデータエクスポートインポートを実現
1まずtelnetでmemcachedデータベースに入ってテストデータを作成する
set name 1 0 5
Kevin
STORED
set age 1 0 2
18
STORED
set sex 1 0 4
male
STORED
2 telnetを終了:ctrl+]
^] ctrl+]
telnet>quit入力quitコマンド終了
Connection closed.終了
3 memcachedステータスの表示
memstat --servers=127.0.0.1:11211
Server: 127.0.0.1 (11211)
pid: 617
uptime: 79684
time: 1530688689
version: 1.4.15
libevent: 2.0.21-stable
pointer_size: 64
rusage_user: 1.421258
rusage_system: 0.940525
curr_connections: 10
total_connections: 17
connection_structures: 11
reserved_fds: 20
cmd_get: 13
cmd_set: 16
cmd_flush: 0
cmd_touch: 0
get_hits: 8
get_misses: 5
delete_misses: 2
delete_hits: 2
incr_misses: 0
incr_hits: 0
decr_misses: 0
decr_hits: 0
cas_misses: 0
cas_hits: 0
cas_badval: 0
touch_hits: 0
touch_misses: 0
auth_cmds: 0
auth_errors: 0
bytes_read: 716
bytes_written: 10871
limit_maxbytes: 67108864
accepting_conns: 1
listen_disabled_num: 0
threads: 4
conn_yields: 0
hash_power_level: 16
hash_bytes: 524288
hash_is_expanding: 0
bytes: 216
curr_items: 3
total_items: 12
expired_unfetched: 0
evicted_unfetched: 0
evictions: 0
reclaimed: 2
ここでcmd_set:16は作成したばかりのデータ項目数です
delete_hits:2削除したばかりの項目
4データのエクスポート
memcached-tool 127.0.0.1:11211 dump
Dumping memcache contents
Number of buckets: 1
Number of items : 3
Dumping bucket 1 - 3 total items
add name 1 1530609005 5
Kevin
add age 1 1530609005 2
18
add sex 1 1530609005 4
male
リダイレクト操作を行わないとプレビュー効果が表示されます
エクスポートを指定したファイルにリダイレクト
memcached-tool 127.0.0.1:11211 dump > mem_data0704.txt
Dumping memcache contents
Number of buckets: 1
Number of items : 3
Dumping bucket 1 - 3 total items
cat !$
cat mem_data0704.txt
add name 1 1530609005 5
Kevin
add age 1 1530609005 2
18
add sex 1 1530609005 4
male
5ファイルからデータベースをインポート
nc 127.0.0.1 11211
NOT_STORED , add , , , ,
memcached , memcached , , 。
systemctl restart memcached
データを インポートし、インポートに しました.nc 127.0.0.1 11211
: , , ,
, 。
, , 1
date -d "+1 day" +%s
1530776745
エクスポート のファイルスタンプの cat mem_data0704.txt
add name 1 1530609005 5
Kevin
add age 1 1530609005 2
18
add sex 1 1530609005 4
male
なタイムスタンプの sed -i 's/1530609005/1530776745/g' mem_data0704.txt
cat mem_data0704.txt
add name 1 1530776745 5
Kevin
add age 1 1530776745 2
18
add sex 1 1530776745 4
male
データベースを インポートし、nc 127.0.0.1 11211
,
telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get name
VALUE name 1 5
Kevin
END
get age
VALUE age 1 2
18
END
get sex
VALUE sex 1 4
male
END
インポートに しました
Q&A:
なぜライブラリを するときに された れの が と なり、エクスポート にデータがタイムスタンプの になるのですか?
これは、システムがデータを するときに を し、エクスポートしたファイルがmemcachedからエクスポートされるためです.
21.7 php memcached
phpのmemcache を にインストールcd /usr/local/src/
wget http://www.apelearn.com/bbs/data/attachment/forum/memcache-2.2.3.tgz
tar zxf memcache-2.2.3.tgz
cd memcache-2.2.3
/usr/local/php-fpm/bin/phpize
./configure --with-php-config=/usr/local/php-fpm/bin/php-config
make && make install
インストールが すると、Installing shared extensions:/usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-231226/vim /usr/local/php-fpm/etc/php.ini
extension=を つける
extension=「memcache.so」を
memcachedが されたかどうかを します/usr/local/php-fpm/sbin/php-fpm -m
[PHP Modules]
cgi-fcgi
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mcrypt
memcache
mysql
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
テストスクリプトのダウンロードcurl www.apelearn.com/study_v2/.memcache.txt > 1.php 2>/dev/null
1.phpコンテンツも https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/1.php
スクリプトの
/usr/local/php-fpm/bin/php 1.php
または1.phpはある ホストのルートディレクトリの に いて、ブラウザでアクセスして、 を ることができます
には、 のようなデータが されます. [0] => aaa
[1] => bbb
[2] => ccc
[3] => ddd
21.8 memcachedにセッションを
セッションの の vim /usr/local/php-fpm/etc/php.ini
session.save_handler = files
filesはsesisionがローカル/tmp/に されていることを し、sessionが されるたびにファイルが されます.
テストは のとおりです.
テスト のファイルlsステータスls -lt /tmp/
srw-rw-rw- 1 root root 0 Jul 4 18:18 aming.sock
srw-rw-rw- 1 root root 0 Jul 4 18:18 php-fcgi.sock
srw-rw-rw- 1 root root 0 Jul 4 17:29 aaa.sock
drwxr-xr-x 2 root root 4096 Jul 2 10:59 hsperfdata_root
srwxrwxrwx 1 mysql mysql 0 Jun 30 15:48 mysql.sock
-rw-r--r-- 1 root root 1283 Jun 27 18:02 fuxi.com_access.log
srwxr-xr-x 1 root root 0 Jun 26 04:06 Aegis-
drwx------ 3 root root 4096 Apr 19 14:24 systemd-private-f7277ce00b84475293449af32306aba8-ntpd.service-bg2rEZ
ホストディレクトリにphpスクリプトを するcd /data/wwwroot/
wget http://study.lishiming.net/.mem_se.txt
mv .mem_se.txt 11.php
curl localhost/11.php
1530699618
1530699618
vt380k4sru58kad7k7qfsio8a6
curl localhost/11.php
1530699618
1530699618
vt380k4sru58kad7k7qfsio8a6
curl localhost/11.php
1530699618
1530699618
vt380k4sru58kad7k7qfsio8a6
curlが3 もした 、php-fpmが3つ えたことに づいて ファイルを しました.これはちょうど しているセッションファイルです.ls -lt /tmp/
total 24
-rw------- 1 php-fpm php-fpm 37 Jul 4 18:25 sess_0j4a3r7b5ec00668rn0hjsonk4
-rw------- 1 php-fpm php-fpm 37 Jul 4 18:20 sess_vt380k4sru58kad7k7qfsio8a6
-rw------- 1 php-fpm php-fpm 37 Jul 4 18:18 sess_jbv3fihdervat4dceo879mccs7
srw-rw-rw- 1 root root 0 Jul 4 18:18 aming.sock
srw-rw-rw- 1 root root 0 Jul 4 18:18 php-fcgi.sock
srw-rw-rw- 1 root root 0 Jul 4 17:29 aaa.sock
drwxr-xr-x 2 root root 4096 Jul 2 10:59 hsperfdata_root
srwxrwxrwx 1 mysql mysql 0 Jun 30 15:48 mysql.sock
-rw-r--r-- 1 root root 1283 Jun 27 18:02 fuxi.com_access.log
srwxr-xr-x 1 root root 0 Jun 26 04:06 Aegis-
drwx------ 3 root root 4096 Apr 19 14:24 systemd-private-f7277ce00b84475293449af32306aba8-ntpd.service-bg2rEZ
これらのセッションファイルの パスを するには、 の に います.
セッションファイルをmemcachedに します. の を います.
php-fpm.conf poolに
php_value[session.save_handler] = memcache
php_value[session.save_path] = "tcp://ip:port"
phpを
/etc/init.d/php-fpm restart
/tmp/ のセッションファイルを
rm -f/tmp/se*
セッションファイルが/tmpの にロードされていないことがわかります.
ls -lt/tmp/
curlテストを う
curl localhost/11.php
15307014321530701432e75l0ab8qpp36oapkmun763h53
e 75 l 0 ab 8 qpp 36 oapkmun 763 h 53はkey であり、key があれば な であり、key がなければエラー である
memcachedに ってk-vを
telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get e75l0ab8qpp36oapkmun763h53
VALUE e75l0ab8qpp36oapkmun763h53 0 37
TEST|i:1530701432;TEST3|i:1530701432;
END
な