ホームページ  >  記事  >  バックエンド開発  >  Redis を使用して PHP で共有ストレージを実装する

Redis を使用して PHP で共有ストレージを実装する

WBOY
WBOYオリジナル
2023-05-16 08:57:20677ブラウズ

インターネット アプリケーションの継続的な開発に伴い、データの保存と処理に対する需要は増加し続けています。ただし、従来のリレーショナル データベースには、パフォーマンスとスケーラビリティにおいて特定のボトルネックがあります。この問題を解決するために登場したのがNoSQLデータベースです。中でもRedisは高速なNoSQLデータベースとして、キャッシュ、メッセージキュー、キーバリューストレージなどの分野で広く利用されています。この記事では、PHP を使用して Redis に接続し、共有ストレージを実装して読み取りおよび書き込みのパフォーマンスとスケーラビリティを向上させる方法を詳しく紹介します。

1. Redis の基礎知識

  1. Redis のデータ構造

Redis は、文字列、ハッシュ テーブル、リストなど、さまざまなデータ構造をサポートしています。 、セット、オーダードセットなど。アプリケーションでは、Redis は通常、よく使用されるデータをキャッシュすることでサーバーの負荷を軽減するキャッシュとして使用されます。

  1. Redis の永続化メソッド

Redis は、RDB と AOF という 2 つの永続化メソッドをサポートしています。 RDB はメモリ内のデータをディスク上のスナップショットに定期的に保存することによって実装されますが、AOF は Redis に書き込まれたすべての操作を記録して、Redis の再起動時に再実行できるようにします。

  1. Redis のマスター スレーブ レプリケーション

Redis はマスター スレーブ レプリケーションをサポートしており、読み取りパフォーマンスと可用性を効果的に向上させることができます。マスター/スレーブ レプリケーションにより、マスター サーバーが複数のスレーブ サーバーにデータを同期できるため、マスター サーバーの負荷が軽減され、システムの可用性が向上します。マスターサーバーに障害が発生すると、自動的にスレーブサーバーに切り替わり、システムが迅速に復旧します。

2. PHP は Redis に接続します

PECL 拡張機能または組み込みの Redis 拡張機能を介して Redis に接続できます。次に、両者の使い方を詳しく紹介します。

  1. PECL 拡張機能

PECL 拡張機能は、Redis クラスターやセンチネル モードなどのより高度な機能を提供しますが、手動でのコンパイルとインストールが必要です。

1) PECL 拡張機能をインストールします

最初に Redis 拡張機能をダウンロードし、次に拡張機能のディレクトリに入って次のコマンドを実行する必要があります:

phpize
./configure
make
make install

2) Redis に接続

Connect Redis では、Redis サーバーの IP アドレスとポートを設定する必要があります。接続が確立されると、関連する操作を実行できるようになります。

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('name', 'redis');
$name = $redis->get('name');
echo $name;
  1. redis 拡張機能

redis 拡張機能は、PHP 5.5 以降の公式拡張機能です。インストールと使用は非常に簡単で、手動でのコンパイルやインストールは必要ありません。 。

1) Redis 拡張機能をインストールします

yum を通じてインストールできます:

yum install php-redis

インストール パッケージを手動でダウンロードし、解凍してインストールすることもできます:

wget https://github.com/phpredis/phpredis/archive/5.2.3.tar.gz
tar -zxvf 5.2.3.tar.gz
cd phpredis-5.2.3
phpize
./configure
make && make install

2) Redis への接続

Redis への接続には、Redis サーバーの IP アドレスとポートの設定も必要です。接続が確立されると、関連する操作を実行できるようになります。

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('name', 'redis');
$name = $redis->get('name');
echo $name;

3. Redis シャードストレージ

Redis データの量が非常に多い場合、単一ノードのパフォーマンスがボトルネックに達する可能性があります。パフォーマンスと可用性を向上させるために、データを複数のノードに分散して共有ストレージを実装できます。

シャードストレージは、データをさまざまな形式でさまざまなノードに割り当て、各ノードがデータの一部を保存します。このようにして、クライアントはキーのハッシュ値を計算することで、各ノード上の対応するデータを見つけることができます。

  1. コンシステント ハッシュ

コンシステント ハッシュ (コンシステント ハッシュ) は、キャッシュやデータベースの分散パフォーマンスのボトルネックを解決するために使用されるアルゴリズムです。キーのハッシュ値をリング上にマッピングすると、リング上で時計回りに最も近いノードがデータ格納ノードとして見つかります。ノードを追加または削除すると、隣接するノードは影響を受けますが、他のノードは影響を受けません。

  1. Redis のシャード ストレージ

Redis のシャード ストレージは、一貫したハッシュ アルゴリズムを通じて実装できます。具体的な手順は次のとおりです。

1) キーのハッシュ値を計算し、対応するノードを見つけます。

$server = $nodes[crc32($key) % count($nodes)];

2) 対応するノードに接続し、関連する操作を実行します。

$redis = new Redis();
$redis->connect($server['host'], $server['port']);
$redis->set($key, $value);

3) ノードが追加または削除されると、マッピング キーのハッシュ値がコンシステント ハッシュ アルゴリズムを通じて再計算され、データが新しいノードに均等に分散され、元のノード データが削除されます。

4. 実装プロセス

以下では、PHP を使用して Redis に接続し、シャード ストレージを実装する方法を詳しく紹介します。

    #環境の準備
今回の実験で使用した環境は次のとおりです。

    CentOS 7.6.1810 OS
  • PHP 7.2.22
  • Redis 3.2.12
    Redis 拡張機能をダウンロードしてインストールします
  1. wget https://github.com/phpredis/phpredis/archive/5.2.3.tar.gz
    tar -zxvf 5.2.3.tar.gz
    cd phpredis-5.2.3
    phpize
    ./configure
    make && make install
    共有ストレージを書き込みますコード
Redis に接続して共有ストレージを実装するコードは次のとおりです:

<?php

// Redis节点列表
$nodes = array(
    array('host' => '127.0.0.1', 'port' => 6379),
    array('host' => '127.0.0.1', 'port' => 6380),
);

// 计算键的散列值,并找到对应的节点
function getServer($key, $nodes)
{
    $server = $nodes[crc32($key) % count($nodes)];
    return $server;
}

// 连接对应的节点,进行相关操作
function redis($key, $value, $nodes)
{
    $server = getServer($key, $nodes);
    $redis = new Redis();
    $redis->connect($server['host'], $server['port']);
    $redis->set($key, $value);
    return true;
}

// 测试代码
$key = 'name';
$value = 'redis';
redis($key, $value, $nodes);
$name = redis->get($key);
echo $name;

?>

5. 概要

この記事では、PHP を使用して接続する方法について詳しく説明します。 Redis と一貫性のあるハッシュの使用 このアルゴリズムは、読み取りおよび書き込みのパフォーマンスとスケーラビリティを向上させるために共有ストレージを実装します。 Redis は高速な NoSQL データベースとして広く使用されており、優れたパフォーマンスと可用性を備えています。実際のアプリケーションでは、特定の状況に基づいて適切な共有ストレージ ソリューションを選択し、互換性と保守性の問題に注意を払う必要があります。

以上がRedis を使用して PHP で共有ストレージを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。