Memcachedキャッシュサービスの紹介と構築
文書ディレクトリ1 Memcachedとは何ですか? 1.1 Memcachedの役割 1.2共通キャッシュサービスソフトウェア比較 1.3 Memcachedの特性 2 Memcachedインストール構成 2.1 memcachedコマンドパラメータ 2.2 MySQLとMemcachedの管理に関する一般的なコマンドの比較 2.3 memcachedサービスアクセスデータ 2.4 memcachedサービス を停止
1 Memcachedって何? Memcachedはオープンソースで、高性能、高同時性の分散キャッシュシステムをサポートし、C言語で書かれ、合計2000行以上のコードが書かれています. Memcachedサービスは、Memcached-1.4.24のようなサービス側とクライアント側の2つの部分に分かれている.tar.gz、クライアントソフトウェアの名前はMemcache-2.25のようです.tar.gz. Memcached公式サイト:http://memcached.org/
1.1 Memcachedの役割従来のシーンでは、多くのWebアプリケーションがリレーショナル・データベース(MySQLなど)にデータを保存し、Webサーバがデータを読み出してブラウザに表示します.しかし、データ量の増加、アクセスの集中に伴い、リレーショナル・データベースの負担が重くなり、応答が遅くなり、Webサイトのオープンが遅延するなどの問題が発生し、ユーザー体験に影響を与える. この時Memcachedソフトウェアが出馬する必要があります.Memcachedを使用する主な目的は、リレーショナル・データベースのクエリー結果を自己キャッシュでキャッシュすることによって、動的Webアプリケーションの速度を向上させ、Webアーキテクチャの同時性と拡張性を向上させるために、データベース自身がアクセスされる回数を減らすことです. Memcachedサービスの動作原理は、事前に計画されたシステムメモリ空間でデータベースの各種データを一時的にキャッシュすることによって、フロントエンド業務サービスによるデータベースへの直接的な高同時アクセスを低減し、大規模なウェブサイトクラスタにおける動的サービスの同時アクセス能力を向上させることである.
1.2一般的なキャッシュサービスソフトウェアの比較
ソフトウェア
を選択します.
主な役割
キャッシュされたデータ
Memcached
純メモリタイプ
共通語は、データベース内のデータなど、Webサイトのバックエンドのさまざまなデータをキャッシュします.
主に、blogのブログ、bbsの投稿など、ユーザーが繰り返し要求する動的なコンテンツと、ユーザーのセッション情報をキャッシュします.
Redis、Memcachedb
永続化されたストレージ(メモリを使用するか、ディスクストレージを使用するか)
1、バックエンドデータベースのクエリーデータをキャッシュする2、リレーショナルデータベースとしての重要な補足
1、キャッシュとして:主にユーザーの繰り返し要求の動的内容をキャッシュする;例えば、blogのブログ、bbsの投稿などです.
Squid、Nginx
メモリまたはメモリにディスクキャッシュ
主にwebフロントエンドのサービス内容をキャッシュするために使用される
主に静的データキャッシュに用いられ、例えば、画像、添付ファイル(圧縮パッケージ)、js、css、htmlなどであり、この部分の機能の多くの企業は専門のCDN会社を選択する.
1.3 Memcachedの特性プロトコル単純 はepoll/kqueue非同期I/Oモデルをサポートし、libeventをイベント処理通知メカニズムとして使用します. key/valueキー値データ型 フルメモリキャッシュは、効率が高い(すべてのデータがMemcachedサービスで事前に割り当てられたメモリに格納され、永続化されたメモリの設計がなく、システムの物理メモリと同様に、システムまたはMemcachedサービスを再起動すると、Memcachedメモリのデータが失われる.再起動後もデータが保持されるようにすれば、redisのような永続性メモリキャッシュシステムを採用することができる) メモリにキャッシュされたデータ容量がサービス起動時に設定されたメモリ値に達した場合、LRUアルゴリズムを使用して期限切れのキャッシュデータを自動的に削除します.また、データの格納時に格納されたデータに期限切れを設定することで、期限切れになると自動的にデータが消去され、Memcachedサービス自体がデータの期限切れを監視するのではなく、アクセス時にkeyのタイムスタンプを見て期限切れかどうかを判断することもできます.
2 Memcachedインストール構成
1、システムバージョンの表示
2、インストール依存libevent
3、memcachedのインストール
4、指定パラメータの表示
5、起動例
6、電源投入の自己起動
**コンパイルインストール:**yumインストールのmemcachedのバージョンはやや低いが、使用には影響しないため、より高いバージョンをインストールするにはインストールをコンパイルする必要があります.コマンドセットは次のとおりです.
ここではyumやrpmで取り付けることをお勧めしますが、比較的簡単で使いやすいです.
2.1 memcachedコマンドパラメータ
パラメータ
さぎょう
-l
プロセスリスニングのIPアドレスを指定します.このパラメータを設定しないでください.
-d
デーモン方式でサービスを実行
-u
Memcachedを実行するユーザーを指定します.現在のユーザーがrootの場合、このパラメータを使用してユーザーを指定する必要があります.
-p(小文字)
MemcachedサービスがTCPポート番号をリスニングすることを指定します.デフォルトは11211
-P(大文字)
Memcachedを保存するpidファイル($$)を設定し、指定したファイルにPIDを保存します.
メモリ関連の設定
パラメータ
さぎょう
-m
Memcachedサービスがデータをキャッシュできる最大メモリを指定します.デフォルトは64 M
-M
Memcachedサービスのメモリが足りない場合はLRUを禁止し、メモリがいっぱいになったらエラーを報告します.
-n
key+value+flagsに割り当てられた最小メモリ領域、デフォルト48バイト
-f
chunk size成長因子、デフォルト1.25
-L
大きなメモリ・ページを有効にすると、メモリの浪費を低減し、パフォーマンスを向上
同時接続の設定
パラメータ
さぎょう
-c
最大同時接続数、デフォルトは1024
-t
スレッド数、デフォルト4.memcachedはNIOを採用しているため、スレッドが多すぎるとあまり役に立たない.
-R
eventあたりの最大リクエスト数、デフォルト20
-C
金庸CAS(バージョンカウントを禁止し、オーバーヘッドを減らすことができます)
デバッグパラメータ
パラメータ
さぎょう
-v
印刷量の少ないerrors/warnings
-vv
非常に多くのデバッグ情報とエラーをコンソールに出力し、クライアントコマンドと応答も印刷します.
-vvv
デバッグ情報とエラー出力を極めて多く印刷し、内部状態を印刷します.
その他のオプションは、「memcached-h」コマンドで使用可能なすべてのオプションを表示できます.
2.2 MySQLとMemcachedの管理に関する一般的なコマンドの比較
MySQLデータベース管理
Memcached管理
MySQLのinsert文
Memcachedのsetコマンド
MySQLのselectと文
Memcachedのgetコマンド
MySQLのdelete文
Memcachedのdeleteコマンド
MySQLのupdate文
Memcachedのreplaceコマンド
memcachedを操作する関連コマンドの基本構文
操作memcachedに関するコマンドの詳細説明
command name
さぎょう
set
いずれにしても書き込みを行うと、古いデータが上書きされます
add
対応するデータが存在しない場合のみデータを追加
replace
データが存在する場合のみ置換
append
追加:append datablock
prepend
前へ追加:prepend datablock
cas
バージョン番号による変更
その他のパラメータ
さぎょう
key
通常の文字列、250文字未満、スペースおよび制御文字なし
flags
クライアントはjson,xml,圧縮などのデータフォーマットを識別するための数値
exptime
生存時間s,0は永遠,30日未満,606024*30は秒数,30日以上unixtime
bytes
byteバイト数、rを含まない、長さに応じて切り取った文字列は、0、すなわち空白列であってもよい
datablock
テキスト行は、rで終わります.もちろん、rまたは
status
STORED/NOT_STORED/EXISTS/NOT_FOUND ERROR/CLIENT_ERROR/SERVER_ERRORサービス側は接続を閉じて修復します.
2.3 memcachedサービスアクセスデータ
単純なデータ挿入とデータの表示
データの問合せや削除の際には必ずキー値を指定して操作してください
ncテスト検索または削除データの追加
置換テスト
2.4 memcachedサービスの停止
memcachedサービスを開始するパラメータにpidファイルを作成すると、サービスを停止しやすくなります.
1 Memcachedって何?
1.1 Memcachedの役割
1.2一般的なキャッシュサービスソフトウェアの比較
ソフトウェア
を選択します.
主な役割
キャッシュされたデータ
Memcached
純メモリタイプ
共通語は、データベース内のデータなど、Webサイトのバックエンドのさまざまなデータをキャッシュします.
主に、blogのブログ、bbsの投稿など、ユーザーが繰り返し要求する動的なコンテンツと、ユーザーのセッション情報をキャッシュします.
Redis、Memcachedb
永続化されたストレージ(メモリを使用するか、ディスクストレージを使用するか)
1、バックエンドデータベースのクエリーデータをキャッシュする2、リレーショナルデータベースとしての重要な補足
1、キャッシュとして:主にユーザーの繰り返し要求の動的内容をキャッシュする;例えば、blogのブログ、bbsの投稿などです.
Squid、Nginx
メモリまたはメモリにディスクキャッシュ
主にwebフロントエンドのサービス内容をキャッシュするために使用される
主に静的データキャッシュに用いられ、例えば、画像、添付ファイル(圧縮パッケージ)、js、css、htmlなどであり、この部分の機能の多くの企業は専門のCDN会社を選択する.
1.3 Memcachedの特性
2 Memcachedインストール構成
1、システムバージョンの表示
cat /etc/redhat-release
uname -r
uname -m
[root@cache01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@cache01 ~]# uname -r
2.6.32-696.el6.x86_64
[root@cache01 ~]# uname -m
x86_64
2、インストール依存libevent
[root@cache01 ~]# yum install libevent libevent-devel telnet nc
[root@cache01 ~]# rpm -qa libevent libevent-devel telnet nc
libevent-1.4.13-4.el6.x86_64
nc-1.84-24.el6.x86_64
libevent-devel-1.4.13-4.el6.x86_64
telnet-0.17-48.el6.x86_64
3、memcachedのインストール
[root@cache01 ~]# yum install memcached -y
[root@cache01 ~]# rpm -qa memcached
memcached-1.4.4-5.el6.x86_64
4、指定パラメータの表示
[root@cache01 ~]# memcached -h
5、起動例
[root@cache01 ~]# memcached -m 16m -p 11211 -d -u root -c 8192
[root@cache01 ~]# lsof -i :11211
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
memcached 2317 root 26u IPv4 14664 0t0 TCP *:memcache (LISTEN)
memcached 2317 root 27u IPv6 14665 0t0 TCP *:memcache (LISTEN)
memcached 2317 root 28u IPv4 14668 0t0 UDP *:memcache
memcached 2317 root 29u IPv6 14669 0t0 UDP *:memcache
#
[root@cache01 ~]# memcached -m 16m -p 11212 -d -u root -c 8192
[root@cache01 ~]# ps -ef |grep memcached|grep -v grep
root 2317 1 0 15:08 ? 00:00:00 memcached -m 16m -p 11211 -d -u root -c 8192
root 2335 1 0 15:11 ? 00:00:00 memcached -m 16m -p 11212 -d -u root -c 8192
6、電源投入の自己起動
cat >>/etc/rc.local<
**コンパイルインストール:**yumインストールのmemcachedのバージョンはやや低いが、使用には影響しないため、より高いバージョンをインストールするにはインストールをコンパイルする必要があります.コマンドセットは次のとおりです.
wget http://memcached.org/files/memcached-1.4.24.tar.gz
tar xf memcached-1.4.24.tar.gz
cd memcached-1.4.24
./configure
make && make install
cd ../
ここではyumやrpmで取り付けることをお勧めしますが、比較的簡単で使いやすいです.
2.1 memcachedコマンドパラメータ
パラメータ
さぎょう
-l
プロセスリスニングのIPアドレスを指定します.このパラメータを設定しないでください.
-d
デーモン方式でサービスを実行
-u
Memcachedを実行するユーザーを指定します.現在のユーザーがrootの場合、このパラメータを使用してユーザーを指定する必要があります.
-p(小文字)
MemcachedサービスがTCPポート番号をリスニングすることを指定します.デフォルトは11211
-P(大文字)
Memcachedを保存するpidファイル($$)を設定し、指定したファイルにPIDを保存します.
メモリ関連の設定
パラメータ
さぎょう
-m
Memcachedサービスがデータをキャッシュできる最大メモリを指定します.デフォルトは64 M
-M
Memcachedサービスのメモリが足りない場合はLRUを禁止し、メモリがいっぱいになったらエラーを報告します.
-n
key+value+flagsに割り当てられた最小メモリ領域、デフォルト48バイト
-f
chunk size成長因子、デフォルト1.25
-L
大きなメモリ・ページを有効にすると、メモリの浪費を低減し、パフォーマンスを向上
同時接続の設定
パラメータ
さぎょう
-c
最大同時接続数、デフォルトは1024
-t
スレッド数、デフォルト4.memcachedはNIOを採用しているため、スレッドが多すぎるとあまり役に立たない.
-R
eventあたりの最大リクエスト数、デフォルト20
-C
金庸CAS(バージョンカウントを禁止し、オーバーヘッドを減らすことができます)
デバッグパラメータ
パラメータ
さぎょう
-v
印刷量の少ないerrors/warnings
-vv
非常に多くのデバッグ情報とエラーをコンソールに出力し、クライアントコマンドと応答も印刷します.
-vvv
デバッグ情報とエラー出力を極めて多く印刷し、内部状態を印刷します.
その他のオプションは、「memcached-h」コマンドで使用可能なすべてのオプションを表示できます.
2.2 MySQLとMemcachedの管理に関する一般的なコマンドの比較
MySQLデータベース管理
Memcached管理
MySQLのinsert文
Memcachedのsetコマンド
MySQLのselectと文
Memcachedのgetコマンド
MySQLのdelete文
Memcachedのdeleteコマンド
MySQLのupdate文
Memcachedのreplaceコマンド
memcachedを操作する関連コマンドの基本構文
set key1 0 0 6
\r
\r
\r
操作memcachedに関するコマンドの詳細説明
command name
さぎょう
set
いずれにしても書き込みを行うと、古いデータが上書きされます
add
対応するデータが存在しない場合のみデータを追加
replace
データが存在する場合のみ置換
append
追加:append datablock
prepend
前へ追加:prepend datablock
cas
バージョン番号による変更
その他のパラメータ
さぎょう
key
通常の文字列、250文字未満、スペースおよび制御文字なし
flags
クライアントはjson,xml,圧縮などのデータフォーマットを識別するための数値
exptime
生存時間s,0は永遠,30日未満,606024*30は秒数,30日以上unixtime
bytes
byteバイト数、rを含まない、長さに応じて切り取った文字列は、0、すなわち空白列であってもよい
datablock
テキスト行は、rで終わります.もちろん、rまたは
status
STORED/NOT_STORED/EXISTS/NOT_FOUND ERROR/CLIENT_ERROR/SERVER_ERRORサービス側は接続を閉じて修復します.
2.3 memcachedサービスアクセスデータ
単純なデータ挿入とデータの表示
[root@cache01 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set user01 0 0 7
oldgirl
STORED
get user01
VALUE user01 0 7
oldgirl
END
quit
Connection closed by foreign host.
データの問合せや削除の際には必ずキー値を指定して操作してください
[root@cache01 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set k1 0 0 3
rsq
STORED
get k1
VALUE k1 0 3
rsq
END
delete rsq
NOT_FOUND
delete k1
DELETED
get k1
END
set k1 0 0 3
rsqrsq
CLIENT_ERROR bad data chunk
ERROR
quit
Connection closed by foreign host.
ncテスト検索または削除データの追加
[root@cache01 ~]# printf "set key1 0 0 6\r
rsqrsq\r
"|nc 127.0.0.1 11211
STORED
[root@cache01 ~]# printf "get key1\r
"|nc 127.0.0.1 11211
VALUE key1 0 6
rsqrsq
END
[root@cache01 ~]# printf "delete key1\r
"|nc 127.0.0.1 11211
DELETED
[root@cache01 ~]# printf "get key1\r
"|nc 127.0.0.1 11211
END
置換テスト
[root@cache01 ~]# printf "set key1 0 0 6\r
rsqrsq\r
"|nc 127.0.0.1 11211
STORED
[root@cache01 ~]# printf "get key1\r
"|nc 127.0.0.1 11211
VALUE key1 0 6
rsqrsq
END
[root@cache01 ~]# printf "replace key1 0 0 6\r
RSQRSQ\r
"|nc 127.0.0.1 11211
STORED
[root@cache01 ~]# printf "get key1\r
"|nc 127.0.0.1 11211
VALUE key1 0 6
RSQRSQ
END
2.4 memcachedサービスの停止
[root@cache01 ~]# ps -ef|grep "memcached"|grep -v "grep"
root 2317 1 0 06:56 ? 00:00:00 memcached -m 16m -p 11211 -d -u root -c 8192
root 2335 1 0 06:58 ? 00:00:00 memcached -m 16m -p 11212 -d -u root -c 8192
[root@cache01 ~]# ps -ef|grep "memcached"|grep -v "grep"
root 2317 1 0 06:56 ? 00:00:00 memcached -m 16m -p 11211 -d -u root -c 8192
root 2335 1 0 06:58 ? 00:00:00 memcached -m 16m -p 11212 -d -u root -c 8192
[root@cache01 ~]# killall memcached
[root@cache01 ~]# ps -ef|grep "memcached"|grep -v "grep"
[root@cache01 ~]#
memcachedサービスを開始するパラメータにpidファイルを作成すると、サービスを停止しやすくなります.
[root@cache01 ~]# memcached -m 16m -p 11211 -d -u root -c 8192 -P /var/run/11211.pid
[root@cache01 ~]# lsof -i :11211
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
memcached 2685 root 26u IPv4 17610 0t0 TCP *:memcache (LISTEN)
memcached 2685 root 27u IPv6 17611 0t0 TCP *:memcache (LISTEN)
memcached 2685 root 28u IPv4 17614 0t0 UDP *:memcache
memcached 2685 root 29u IPv6 17615 0t0 UDP *:memcache
[root@cache01 ~]# kill `cat /var/run/11211.pid`
[root@cache01 ~]# lsof -i :11211
[root@cache01 ~]#