如何在Ubuntu 20.04上使用PHP將Redis設置為MySQL的緩存

Redis是一個開源的內存數據結構存儲,可用於緩存,實時分析,搜索和機器學習。 將Redis與PHP和MySQL集成會提高您的應用程序性能,因為Redis將數據存儲在RAM中。

您可以將其與MySQL或MariaDB等數據庫一起使用。 Redis提供了一種緩存查詢的機制。 例如,當用戶第一次請求您的應用程序頁面時,將在服務器上執行MySQL查詢,然後Redis將該查詢緩存到RAM。 當另一個用戶請求同一頁面時,您無需再次查詢數據庫。

先決條件

  • Ubuntu 20.04 VPS(我們將使用SSD 2 VPS計劃)
  • 訪問root用戶帳戶(或訪問具有root特權的管理員帳戶)

步驟1:登錄到服務器並更新服務器操作系統軟件包

首先,以root用戶身份通過​​SSH登錄到Ubuntu 20.04服務器:

ssh [email protected]_Address -p Port_number

您將需要用服務器各自的IP地址和SSH端口號替換“ IP_Address”和“ Port_number”。 此外,如有必要,將“ root”替換為管理員帳戶的用戶名。

開始之前,您必須確保服務器上安裝的所有Ubuntu OS軟件包都是最新的。 您可以通過運行以下命令來執行此操作:

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

步驟2:安裝LAMP Server

首先,您需要在系統中安裝LAMP服務器。 您可以使用以下命令進行安裝:

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

安裝完成後,您可以繼續執行下一步。

步驟3:安裝和配置Redis

默認情況下,Ubuntu默認存儲庫中不包含最新版本的Redis。 因此,您將需要將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步:創建一個PHP應用程序以從MySQL獲取數據

接下來,您將需要創建一個PHP應用程序並將其託管在Apache Web服務器上。 該應用程序將連接到MySQL數據庫並查詢我們之前創建的Student表。

首先,在Apache Web根目錄中創建一個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×7的服務,並會立即處理您的要求。

聚苯乙烯。 如果您喜歡這篇文章, 如何在Ubuntu 20.04上使用PHP將Redis設置為MySQL的緩存,請使用左側的按鈕在社交網絡上與您的朋友分享,或者在下面留下您的答覆。 謝謝。

Sidebar