如何在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