Memcachedキャッシュサービスの紹介と構築

9399 ワード

文書ディレクトリ
  • 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、システムバージョンの表示
    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 ~]#