Analyse des stratégies de stockage et de récupération persistantes pour le cache de données PHP

王林
Libérer: 2023-08-11 06:14:01
original
1548 Les gens l'ont consulté

Analyse des stratégies de stockage et de récupération persistantes pour le cache de données PHP

Analyse des stratégies de stockage et de récupération persistantes pour le cache de données PHP

Dans le développement d'applications PHP, la mise en cache des données est une méthode d'optimisation importante qui peut améliorer considérablement les performances des applications et la vitesse de réponse. Cependant, dans certains cas, nous devons stocker les données mises en cache de manière persistante afin que les données puissent être restaurées après un redémarrage d'application ou un redémarrage de serveur. Cet article présentera quelques stratégies de stockage et de récupération persistantes pour le cache de données PHP et donnera des exemples de code correspondants.

1. Stockage de fichiers

Le stockage de fichiers est une méthode de stockage persistante simple et couramment utilisée, qui enregistre les données du cache sous forme de fichiers sur le disque du serveur. Voici un exemple de code utilisant le stockage de fichiers :

function cache_get($key) {
    $cache_dir = '/path/to/cache/dir/';
    $file = $cache_dir . md5($key);
    
    if (file_exists($file)) {
        $data = file_get_contents($file);
        $cache = unserialize($data);
        if ($cache['expire'] < time()) {
            unlink($file);
            return false;
        }
        return $cache['data'];
    }
    return false;
}

function cache_set($key, $data, $expire = 3600) {
    $cache_dir = '/path/to/cache/dir/';
    $file = $cache_dir . md5($key);
    $cache = [
        'expire' => time() + $expire,
        'data' => $data
    ];
    $data = serialize($cache);
    file_put_contents($file, $data);
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons deux fonctions cache_get et cache_set pour lire et écrire des données. La fonction cache_get génère d'abord un nom de fichier en cryptant MD5 $key, puis vérifie si le fichier existe. S'il existe, lisez le contenu du fichier et désérialisez-le dans les données du cache. Déterminez ensuite si les données mises en cache ont expiré. Si elles ont expiré, supprimez le fichier et renvoyez false. Enfin, les données mises en cache sont renvoyées. La fonction cache_set génère d'abord un nom de fichier en cryptant $key MD5, puis enregistre les données du cache et le délai d'expiration sous forme de tableau associatif, et sérialise le tableau dans une chaîne avant d'écrire dans le fichier. Enfin, utilisez la fonction file_put_contents pour écrire la chaîne dans le fichier. cache_getcache_set来实现数据的读取和写入操作。cache_get函数首先通过将$key进行MD5加密生成文件名,然后检查文件是否存在,如果存在则读取文件内容并反序列化为缓存数据。接着判断缓存数据是否已过期,如果过期则删除文件并返回false。最后返回缓存数据。cache_set函数首先通过将$key进行MD5加密生成文件名,然后将缓存数据和过期时间保存为一个关联数组,在写入文件之前将数组序列化为字符串。最后使用file_put_contents函数将字符串写入文件。

二、数据库存储

数据库存储是另一种常用的持久化存储方式,它将缓存数据保存在数据库表中。下面是一个使用数据库存储的示例代码:

function cache_get($key) {
    $db_host = 'localhost';
    $db_user = 'root';
    $db_password = 'password';
    $db_name = 'cache_db';
    
    $conn = mysqli_connect($db_host, $db_user, $db_password, $db_name);
    if (!$conn) {
        die('Database connection failed: ' . mysqli_connect_error());
    }
    
    $sql = "SELECT data FROM cache_table WHERE `key` = '$key' AND expire >= NOW()";
    $result = mysqli_query($conn, $sql);
    
    if (mysqli_num_rows($result) > 0) {
        $row = mysqli_fetch_assoc($result);
        return $row['data'];
    }
    
    return false;
}

function cache_set($key, $data, $expire = 3600) {
    $db_host = 'localhost';
    $db_user = 'root';
    $db_password = 'password';
    $db_name = 'cache_db';
    
    $conn = mysqli_connect($db_host, $db_user, $db_password, $db_name);
    if (!$conn) {
        die('Database connection failed: ' . mysqli_connect_error());
    }
    
    $expire_date = date('Y-m-d H:i:s', time() + $expire);
    $data = mysqli_real_escape_string($conn, $data);
    
    $sql = "INSERT INTO cache_table (`key`, data, expire) VALUES ('$key', '$data', '$expire_date')";
    mysqli_query($conn, $sql);
}
Copier après la connexion

在上述代码中,我们使用了两个函数cache_getcache_set来实现数据的读取和写入操作。cache_get函数首先建立与数据库的连接,然后通过SQL语句查询数据表中是否存在对应的缓存数据。如果查询结果中存在数据,则返回数据字段的值。cache_set函数首先建立与数据库的连接,然后获取当前时间戳加上过期时间的日期,将数据通过mysqli_real_escape_string函数进行转义,最后执行SQL语句将数据插入数据库表中。

三、内存存储

内存存储是一种高效的持久化存储方式,它将缓存数据保存在内存中,即使应用程序重启或者服务器重启之后,数据依然可以被恢复。下面是一个使用内存存储的示例代码:

function cache_get($key) {
    $cacheObj = new Memcached();
    $cacheObj->addServer('localhost', 11211);
    
    $data = $cacheObj->get($key);
    return $data;
}

function cache_set($key, $data, $expire = 3600) {
    $cacheObj = new Memcached();
    $cacheObj->addServer('localhost', 11211);
    
    $cacheObj->set($key, $data, $expire);
}
Copier après la connexion

在上述代码中,我们使用了两个函数cache_getcache_set来实现数据的读取和写入操作。cache_get函数首先创建一个Memcached对象,并通过addServer方法添加Memcached服务器的地址和端口。接着使用get方法从内存中获取缓存数据,并返回该数据。cache_set函数首先创建一个Memcached对象,并通过addServer方法添加Memcached服务器的地址和端口。接着使用set

2. Stockage de base de données

Le stockage de base de données est une autre méthode de stockage persistante couramment utilisée, qui stocke les données mises en cache dans des tables de base de données. Voici un exemple de code utilisant le stockage de base de données :

rrreee

Dans le code ci-dessus, nous utilisons deux fonctions cache_get et cache_set pour lire et écrire des données. La fonction cache_get établit d'abord une connexion avec la base de données, puis demande si les données mises en cache correspondantes existent dans la table de données via des instructions SQL. Si des données existent dans les résultats de la requête, la valeur du champ de données est renvoyée. La fonction cache_set établit d'abord une connexion avec la base de données, puis obtient l'horodatage actuel plus la date de l'heure d'expiration, échappe les données via la fonction mysqli_real_escape_string et exécute enfin une Instruction SQL pour convertir les données Insérer dans la table de base de données. 🎜🎜3. Stockage mémoire🎜🎜Le stockage mémoire est une méthode de stockage persistante efficace. Il stocke les données mises en cache en mémoire, même après le redémarrage de l'application ou du serveur, les données peuvent toujours être restaurées. Voici un exemple de code utilisant le stockage en mémoire : 🎜rrreee🎜Dans le code ci-dessus, nous utilisons deux fonctions cache_get et cache_set pour lire et écrire des données. La fonction cache_get crée d'abord un objet Memcached et ajoute l'adresse et le port du serveur Memcached via la méthode addServer. Utilisez ensuite la méthode get pour récupérer les données mises en cache de la mémoire et renvoyer les données. La fonction cache_set crée d'abord un objet Memcached et ajoute l'adresse et le port du serveur Memcached via la méthode addServer. Utilisez ensuite la méthode set pour stocker les données en mémoire. 🎜🎜Conclusion🎜🎜Cet article présente la stratégie de stockage persistant et de récupération du cache de données PHP, y compris le stockage de fichiers, le stockage de base de données et le stockage de mémoire. En choisissant la bonne méthode de stockage, vous pouvez améliorer les performances et la réactivité des applications en fonction des besoins réels. J'espère que cet article pourra aider les lecteurs à utiliser la mise en cache des données dans le développement d'applications PHP. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!