Maison >développement back-end >tutoriel php >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); }
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_get
和cache_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); }
在上述代码中,我们使用了两个函数cache_get
和cache_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); }
在上述代码中,我们使用了两个函数cache_get
和cache_set
来实现数据的读取和写入操作。cache_get
函数首先创建一个Memcached
对象,并通过addServer
方法添加Memcached服务器的地址和端口。接着使用get
方法从内存中获取缓存数据,并返回该数据。cache_set
函数首先创建一个Memcached
对象,并通过addServer
方法添加Memcached服务器的地址和端口。接着使用set
rrreee
Dans le code ci-dessus, nous utilisons deux fonctionscache_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!