GNU/Linux >> Linux の 問題 >  >> Panels >> Panels

Ubuntu20.04でPHPを使用してMySQLのキャッシュとしてRedisを設定する方法

Redisは、キャッシュ、リアルタイム分析、検索、機械学習に使用できるオープンソースのインメモリデータ構造ストアです。 RedisをPHPおよびMySQLと統合すると、RedisはデータをRAMに保存するため、アプリケーションのパフォーマンスが向上します。

MySQLやMariaDBなどのデータベースで使用できます。 Redisは、クエリをキャッシュするメカニズムを提供します。たとえば、ユーザーがアプリケーションページを初めてリクエストすると、サーバーでMySQLクエリが実行され、RedisはこのクエリをRAMにキャッシュします。別のユーザーが同じページをリクエストした場合、データベースに再度クエリを実行する必要はありません。

前提条件
  • Ubuntu 20.04 VPS(SSD 2 VPSプランを使用します)
  • rootユーザーアカウントへのアクセス(またはroot権限を持つ管理者アカウントへのアクセス)

ステップ1:サーバーにログインしてサーバーOSパッケージを更新する

まず、rootユーザーとしてSSH経由でUbuntu20.04サーバーにログインします。

ssh root@IP_Address -p Port_number

「IP_Address」と「Port_number」をサーバーのそれぞれのIPアドレスとSSHポート番号に置き換える必要があります。さらに、必要に応じて「root」を管理者アカウントのユーザー名に置き換えます。

開始する前に、サーバーにインストールされているすべてのUbuntuOSパッケージが最新であることを確認する必要があります。これを行うには、次のコマンドを実行します。

apt-get update -y
apt-get upgrade -y

ステップ2:LAMPサーバーをインストールする

まず、システムにLAMPサーバーをインストールする必要があります。次のコマンドでインストールできます:

apt-get install apache2 php libapache2-mod-php php-pdo php-json php-cli mysql-server -y

インストールが完了したら、次の手順に進むことができます。

ステップ3:Redisをインストールして構成する

デフォルトでは、Redisの最新バージョンはUbuntuのデフォルトリポジトリに含まれていません。そのため、Redisリポジトリをシステムに追加する必要があります。

まず、次のコマンドを使用して必要なパッケージをインストールします。

apt-get install software-properties-common gnupg2 -y

次に、次のコマンドを使用してRedisリポジトリを追加します。

add-apt-repository ppa:chris-lea/redis-server

リポジトリが追加されたら、次のコマンドを使用してRedisサーバーをインストールします。

apt-get install redis-server -y

次に、次のコマンドを使用して、PHPおよびMySQLのRedis拡張機能をインストールします。

apt-get install php-redis php-mysql -y

両方のパッケージがインストールされたら、Redisサービスを開始し、システムの再起動時に開始できるようにします。

systemctl start redis-server
systemctl enable redis-server

次に、Apacheサービスを再起動して、構成の変更を適用します。

systemctl restart apache2

ステップ4:MySQLデータベースを作成する

次に、Redisキャッシングをテストするためのデータベース、ユーザー、テーブルを作成する必要があります。

まず、次のコマンドを使用してMySQLに接続します。

mysql

次に、次のコマンドを使用してデータベースとユーザーを作成します。

mysql> CREATE DATABASE testdb;
mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

次に、次のコマンドを使用して、testdbデータベースにすべての権限を付与します。

mysql> GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';

次に、次のコマンドを使用して特権をフラッシュします。

mysql> FLUSH PRIVILEGES;

次に、データベースをtestdbに変更し、次のコマンドを使用してstudentという名前のテーブルを作成します。

mysql> use testdb;
mysql> CREATE TABLE student ( student_id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(50), last_name  VARCHAR(50) );

次に、次のコマンドを使用してテーブルにデータを挿入します。

mysql> INSERT INTO student (first_name, last_name) VALUES ('John', 'Thompson');
mysql> INSERT INTO student (first_name, last_name) VALUES ('Greg', 'Smith');
mysql> INSERT INTO student (first_name, last_name) VALUES ('Ray', 'Brown');

これで、次のコマンドを使用してすべてのデータを確認できます。

mysql> SELECT student_id, first_name, last_name from student;

次の出力が得られるはずです:

+------------+------------+-----------+
| student_id | first_name | last_name |
+------------+------------+-----------+
|          1 | John     | Thompson    |
|          2 | Greg    | Smith      |
|          3 | Ray     | Brown    |
+------------+------------+-----------+
3 rows in set (0.00 sec)

次に、次のコマンドを使用してMySQLを終了します。

mysql> EXIT;

ステップ5:MySQLからデータをフェッチするPHPアプリケーションを作成する

次に、PHPアプリケーションを作成し、ApacheWebサーバーでホストする必要があります。このアプリケーションはMySQLデータベースに接続し、前に作成した学生テーブルにクエリを実行します。

まず、ApacheWebルートディレクトリにPHPアプリケーションを作成します。

nano /var/www/html/student.php

次のコードを追加します:

<html>
  <head>
    <title>Using Redis Server with PHP and MySQL</title>
  </head> 
  <body>

    <h1 align = 'center'>Students' Register</h1>

    <table align = 'center' border = '2'>        

    <?php 
        try {

            $data_source = '';

            $redis = new Redis(); 
            $redis->connect('127.0.0.1', 6379); 

            $sql = 'select
                    student_id,
                    first_name,
                    last_name                                 
                    from student
                    ';

            $cache_key = md5($sql);

            if ($redis->exists($cache_key)) {

                $data_source = "Data from Redis Server";
                $data = unserialize($redis->get($cache_key));

            } else {

                $data_source = 'Data from MySQL Database';

                $db_name     = 'testdb';
                $db_user     = 'testuser';
                $db_password = 'password';
                $db_host     = 'localhost';

                $pdo = new PDO('mysql:host=' . $db_host . '; dbname=' . $db_name, $db_user, $db_password);
                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                $stmt = $pdo->prepare($sql);
                $stmt->execute();
                $data = []; 

                while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {          
                   $data[] = $row;  
                }  

                $redis->set($cache_key, serialize($data)); 
                $redis->expire($cache_key, 10);        
           }

           echo "<tr><td colspan = '3' align = 'center'><h2>$data_source</h2></td></tr>";
           echo "<tr><th>Student Id</th><th>First Name</th><th>Last Name</th></tr>";

           foreach ($data as $record) {
              echo '<tr>';
              echo '<td>' . $record['student_id'] . '</td>';
              echo '<td>' . $record['first_name'] . '</td>';
              echo '<td>' . $record['last_name']  . '</td>';                     
              echo '</tr>'; 
           }              


        } catch (PDOException $e) {
            echo 'Database error. ' . $e->getMessage();
        }
   ?>

    </table>
  </body>
</html>

終了したら、ファイルを保存して閉じます。

上記のアプリケーションはMySQLデータベースに接続し、データをRedisにキャッシュします。

ステップ6:Redisキャッシングをテストする

次に、Redisキャッシングが機能しているかどうかをテストする必要があります。 Webブラウザーを開き、URLを使用してアプリケーションにアクセスします

http://your-server-ip/student.php 。アプリケーションに初めてアクセスするときは、MySQLデータベースからフェッチする必要があります。アプリケーションに再度アクセスすると、Redisキャッシュからデータを取得するため、アプリケーションをより速く開く必要があります。

もちろん、マネージドRedisホスティングのいずれかを使用している場合は、MySQLでセットアップRedisをインストールする必要はありません。その場合は、専門のLinux管理者にインストールと構成を依頼するだけです。 24時間年中無休でご利用いただけます。リクエストはすぐに処理されます。

PS Ubuntu20.04でPHPを使用してMySQLのキャッシュとしてRedisを設定する方法に関するこの投稿が気に入った場合 、左側のボタンを使用してソーシャルネットワークで友達と共有するか、下に返信してください。ありがとう。


Panels
  1. Ubuntu18.04LTSにNginxを使用してPhorumをインストールする方法

  2. Ubuntu20.04にmysql8をインストールしてセットアップする方法

  3. Ubuntu\DebianでUFWを使用してファイアウォールを設定する方法

  1. Ubuntu20.04でWireGuardVPNを設定する方法

  2. Ubuntu11.04にPHP5とMySQLを使用してLighttpdをインストールする方法

  3. Ubuntu16.04でHTTP/2を使用してApacheを設定する方法

  1. Ubuntu 20.04でLAMP(PHP、Apache、Mariadb)を使用してOpencartをセットアップする方法

  2. UbuntuでMySQLクラスターを設定する方法

  3. Ubuntu16.04でUFWを使用してファイアウォールを設定する方法