キャッシュサーバーを構築するための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オブジェクト指向について学ぼう

推薦する

Docker で FastDFS をデプロイする方法

Dockerにfastdfsをインストールするディレクトリをマウント-v /e/fdfs/トラッカー...

Vueはテーブルページング機能を実装します

この記事では、テーブルページング機能を実現するためのVueの具体的なコードを例として紹介します。具体...

Linux CentOS6.5 yum インストール mysql5.6

この記事では、Linux yumを使用してmysql5.6をインストールする簡単な手順を参考までに紹...

CSSは、他のレイヤーを変更せずに、多層ネスト構造の最外層を回転させる効果を実現します。

次のようなシナリオがあります。円形のコンテナで、最も外側のコンテナの背景が円弧になっています。内側の...

HTMLテーブルの詳細な説明

機能: データ表示、テーブルアプリケーションシナリオ。 <table> テーブル<...

Windows Server 2016 標準キー アクティベーション キー シリアル番号

Windows Server 2016 アクティベーション キーを皆さんと共有したいと思います。wi...

HTML+JS に基づくシンプルな年齢計算ツールの実装

目次序文デモンストレーション効果HTMLコードCSSコードJavascriptコードデモアドレス序文...

Vueは画像のドラッグと並べ替えを実装します

この記事の例では、画像のドラッグと並べ替えを実装するためのVueの具体的なコードを参考までに共有して...

WeChat公式アカウントでReactプロジェクトを実行する方法

目次1. a タグを使用して PDF をプレビューまたはダウンロードします。書き方は、携帯電話でクリ...

MySQL で左結合を使用して where 条件を追加する問題の詳細な分析

現在の需要:グループとファクターの 2 つのテーブルがあります。1 つのグループは複数のファクターに...

ミニプログラムでマインドマップを描く方法

目次マインドマップとは何ですか? F6で描く方法アリペイ微信要約するマインドマップとは何ですか?マイ...

Windows Server 2016 に Docker をインストールするプロセスと発生した問題

前提条件Windows Server でコンテナーを実行するには、Windows Server (半...

Nginx 逆生成 Mogilefs 分散ストレージ例の詳細な説明

1. 分散ストレージシステムの概要情報技術の継続的な発展により、利便性がもたらされる一方で、データ量...

docker compose デプロイメントにおけるマスタースレーブレプリケーションの実装

目次構成解析サービス構築ディレクトリ構造ファイルを作成インスタンス構成サービスを開始するテストRed...

ブートストラップ学習体験のまとめ - CSS スタイル デザイン共有

プロジェクトのニーズにより、ブートストラップ フレームワークを慎重に学習する予定です。以前から少しは...