キャッシュサーバーを構築するためのMemcached方式

キャッシュサーバーを構築するためのMemcached方式

序文

多くの Web アプリケーションは、リレーショナル データベース管理システム (RDBMS) にデータを保存し、アプリケーション サーバーはそこからデータを読み取ってブラウザーに表示します。

しかし、データ量が増加し、アクセスが集中すると、RDBMSへの負荷増加、データベースのレスポンス低下、Webサイトの表示遅延など大きな影響が出てしまいます。

Memcached/redis は、データベース クエリ結果をキャッシュし、データベース アクセス回数を減らして、動的 Web などのアプリケーションの速度とスケーラビリティを向上させる、高性能な分散メモリ キャッシュ サーバーです。

RDBMSはリレーショナルデータベース管理システムの略です。

1. はじめに

1. Nosql 製品: redis、mongodb、memcached。

NOSQL 用語の説明: 非リレーショナル データベース

(1)キーと値のペアの形式でデータを保存する --- (キーと値

(2)キャッシュデータベース - キャッシュサーバの役割:アクセスを高速化し、データベースの負荷を軽減する

2. NoSQLの利点と欠点

アドバンテージ:
- 高いスケーラビリティ
- 分散コンピューティング
- 低コスト
- アーキテクチャの柔軟性
- 複雑な関係はありません

欠点:
- 標準化されていない
- クエリ機能が限られている(現時点では)
- 最終的に一貫性のあるプログラミングは直感的ではない

キャッシュサーバー機能: アクセスを高速化し、データベースの負荷を軽減します

3. リレーショナルデータベースと非リレーショナルデータベースの違い:---------面接でよく聞かれる質問

1. まず、リレーショナル データベースとは何かを理解しましょう。
リレーショナル データベースの最も一般的なデータ構造はテーブルです。テーブルは、2 次元のテーブルとそれらの間の接続で構成されるデータ構成です。
アドバンテージ:
1. メンテナンスが容易: すべて一貫した形式のテーブル構造を使用します。
2. 使いやすい: SQL 言語は汎用性があり、複雑なクエリにも使用できます。
3. 複雑な操作: SQL をサポートしており、テーブル内または複数のテーブル間の非常に複雑なクエリに使用できます。
欠点:
1. 読み取りと書き込みのパフォーマンスが比較的低く、特に大量のデータの効率的な読み取りと書き込みが困難です。
2. テーブル構造が固定されており、柔軟性が若干低い。
3. 同時読み取りと書き込みの要件が高い。従来のリレーショナルデータベースでは、ハードディスクI/Oが大きなボトルネックとなる。


2. 非リレーショナル データベースとは何ですか?

非リレーショナル データは、ドキュメントまたはキーと値のペアである構造化されたデータ ストレージ メソッドのコレクションです。

アドバンテージ:
1. 柔軟な形式: 保存されるデータの形式は、キー、値、ドキュメント、画像などです。リレーショナル データベースは基本的なタイプのみをサポートしますが、柔軟に使用でき、幅広いアプリケーション シナリオに対応します。
2. 高速: NoSQL はハードディスクまたはランダム アクセス メモリをキャリアとして使用できますが、リレーショナル データベースはハードディスクのみを使用できます。
3. 高いスケーラビリティ
4. 低コスト: NoSQL データベースは導入が簡単で、基本的にオープンソース ソフトウェアです。

欠点:
1. SQL サポートが提供されておらず、学習および使用コストが高くなります。
2. 取引処理はありません。
3. データ構造が比較的複雑で、複雑なクエリには少し欠けています。

2. メモリキャッシュ

1. 特徴

1. 内蔵メモリ保存方式 ------------ パフォーマンス向上のため、memcached に保存されたデータは memcache の内蔵メモリ保存領域に保存されます。データはメモリ内にのみ存在するため、オペレーティング システムを再起動するとすべてのデータが消えてしまいます。
2. シンプルなキー/値ストレージ--------------シリアル化可能なデータであれば、サーバーはデータ自体の意味や構造を気にしません。

ストレージ項目は、「キー、有効期限、オプションのフラグ、データ」の 4 つの部分で構成されます。

2. サービスフレームワーク

原理

1. クライアントのリクエストデータがmemcachedにあるかどうかを確認します。ある場合は、データベースに対して何も操作せずにリクエストデータを直接返します。パス操作は①②③⑦です。

2. 要求されたデータがmemcachedにない場合は、データベースを確認し、データベースから取得したデータをクライアントに返します。同時に、データのコピーをmemcachedにキャッシュします(memcachedクライアントは責任を負いませんので、プログラムによって明確に実装する必要があります)。パス操作は①②④⑤⑦⑥です。

3. キャッシュを最新の状態に保ちます。データが変更されるたびに (たとえば、データが変更または削除される)、ユーザーがキャッシュから古いデータを取得しないように、キャッシュ情報を同期的に更新する必要があります。

3. Memcachedの設定とインストール

memcache が保存できるデータの量は、サーバー自体のメモリ量によって異なります。

1. インストール - サーバーの準備

[root@memcached ~]# yum install memcached -y
[root@memcached ~]# systemctl start memcached #開始

2. 設定ファイルを変更する

[root@memcached ~]# vim /etc/sysconfig/memcached
PORT="11211" --- リスニング ポート、デフォルトは 11211。変更できます。 USER="memcached" ----- ユーザー MAXCONN="1024" ----- デフォルトの同時実行性、変更できます。 CACHESIZE="64" ------ 指定されたメモリ。デフォルトはM
OPTIONS="" ---- リスニングネットワークアドレス

次に、開発者に IP アドレスを送信します。開発者は API インターフェースを使用して memcached に接続します。
テスト:

[root@memcached ~]# yum install -y telnet #telentをインストール
[root@memcached ~]# telnet 192.168.246.188 11211
192.168.246.188 を試行しています...
192.168.246.188 に接続しました。
エスケープ文字は '^]' です。
set name 0 60 9 #name という名前のキー、key mark bit (id number)、expiration time、size、helloword を設定します。#name の値は STORED です。#stopped が表示されている場合は、保存が成功したことを意味します。
名前を取得 #クエリキー値 VALUE name 0 9
こんにちは
終わり
終了 ---終了

パラメータの説明:
name: キーの名前は自分で定義します
0: キーID番号。他のキーと異なる必要があります
60: キャッシュの有効期限(秒単位、0 は永久)
9: 最大文字列長

使用しない理由: 保存されるデータのタイプは単一であり、データはメモリにのみ保存できます。データの永続化は実現できません。サーバーを再起動すると、データは消えてしまいます。

=================================================================
拡張: memcached をサポートするために PHP 拡張モジュールをインストールします。
php7.0をインストール

[root@memcached ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
[root@memcached ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@memcached ~]# yum -y インストール php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64 php70w-devel zlib-devel php70w-fpm libmemcached php70w-pecl-memcached
[root@memcached ~]# yum install -y make gcc zlib-devel libmemcached-devel git

PHP Memcache拡張機能をダウンロード

nginx を簡単にインストールし、nginx の yum ソースを設定します。 PHP ページへのアクセスをテストします。
[root@memcached ~]# vim /etc/nginx/conf.d/nginx.conf
サーバー{
 聞く 80;
 server_name ローカルホスト;
​
 場所 ~ \.php$ {
 ルート /usr/share/nginx/html;
 127.0.0.1:9000; をデフォルトとして設定します。
 fastcgi_index インデックス.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_params を含めます。
 }
}
php ページを編集 [root@memcached html]# vim /usr/share/nginx/html/index.php
<?php
phpinfo();
?>
nginxを再起動する
php-fpmを起動する
ブラウザアクセス

Memcached を使用したキャッシュ サーバーの構築方法については、これで終わりです。Memcached キャッシュ サーバーに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • NoSQL 入門: NoSQL を使用する理由
  • MySQL シリーズ: MySQL リレーショナル データベースの基本概念
  • MySQL データベースにおける char と varchar の違いの分析と使用上の提案
  • ASP での SQL ステートメントを使用した ASP クラシック入門チュートリアル
  • Osql ツールを使用して SQL Server Desktop Engine (MSDE 2000) アプリケーションを管理する
  • リレーショナルデータベースと非リレーショナルデータベースの紹介

<<:  CentOS7.5 MySQLのインストールチュートリアル

>>:  JavaScriptオブジェクト指向について学ぼう

推薦する

VUE uni-app でよく使用される API についての簡単な説明

目次1. ルーティングとページジャンプ2. インターフェース要約する1. ルーティングとページジャン...

CSSブロッキングマージとその他の効果についての簡単な説明

非直交マージンマージンを使用するとマージが発生します次のプロパティはマージンの結合を防止します。国境...

CSS で平均レイアウトを実現するために負のマージンを使用する例

均等に分散されたレイアウトの場合、通常はネガティブ マージン方式を使用します。次の図は平均的なレイア...

MySQLからElasticsearchにデータを同期する方法の詳細な説明

目次1. 同期の原理2. ログスタッシュ入力JDBC 3. go-mysql-elasticsear...

mysql 5.7.20 win64 のインストールと設定方法

mysql-5.7.20-winx64.zipインストール手順のないインストール パッケージ: ht...

MySQL から Excel にテーブルデータをエクスポートする際の日時形式に関する簡単な説明

最近、MySQL を使用してテーブル データを Excel ファイルにエクスポートしました。MySQ...

MySQL でテーブルデータをクリアする 2 つの方法とその違い

MySQL でデータを削除するには 2 つの方法があります。切り詰めは大まかな伐採の一種である削除は...

CSS でのナビゲーション バーとドロップダウン メニューの実装

1. CSSナビゲーションバー(1)ナビゲーションバーの機能ナビゲーション バーを使いこなすことは、...

Centos7 での nginx のインストールと設定に関する詳細なチュートリアル

注: ソフトウェアのインストールの基本ディレクトリ パスは /usr/local です。ソフトウェア...

Json の長所と短所、使用方法の紹介

目次1. JSONとは何か1.1 配列リテラル1.2 オブジェクトリテラル1.3 混合リテラル1.4...

VueのTodoListケースの詳しい説明

<テンプレート> <div id="ルート"> <...

MySQL の count 関数の正しい使い方の詳細な説明

1. 説明MySQLでは、テーブル内の行の総数を取得する必要がある場合、通常は次の文を使用します。 ...

HTML+CSSで充電水滴融合特殊効果コードを実現

目次序文:成し遂げる:要約:まず効果を見てみましょう: 序文:このアイデアは、Bilibili のア...

フレックスレイアウトでコンテナ内のコンテンツを維持するためのソリューションの詳細な説明

モバイル側では、フレックスレイアウトが非常に便利です。デバイスの幅に応じてコンテナの幅を自動的に調整...