Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Analisis strategi penyimpanan dan pemulihan yang berterusan untuk cache data PHP

Analisis strategi penyimpanan dan pemulihan yang berterusan untuk cache data PHP

王林
王林asal
2023-08-10 23:46:501615semak imbas

Analisis strategi penyimpanan dan pemulihan yang berterusan untuk cache data PHP

Analisis strategi penyimpanan dan pemulihan yang berterusan untuk cache data PHP

Dalam pembangunan aplikasi PHP, cache data ialah kaedah pengoptimuman penting yang boleh meningkatkan prestasi aplikasi dan kelajuan tindak balas dengan ketara. Walau bagaimanapun, dalam beberapa kes, kita perlu menyimpan data cache secara berterusan supaya data boleh dipulihkan selepas aplikasi dimulakan semula atau pelayan dimulakan semula. Artikel ini akan memperkenalkan beberapa strategi penyimpanan dan pemulihan yang berterusan untuk cache data PHP, dan memberikan contoh kod yang sepadan.

1. Storan Fail

Storan fail ialah kaedah penyimpanan berterusan yang mudah dan biasa digunakan, yang menyimpan data cache dalam bentuk fail pada cakera pelayan. Berikut ialah contoh kod menggunakan storan fail:

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);
}

Dalam kod di atas, kami menggunakan dua fungsi cache_get dan cache_set untuk membaca dan menulis data beroperasi. Fungsi cache_get mula-mula menjana nama fail dengan menyulitkan $key MD5, kemudian menyemak sama ada fail itu wujud Jika ia wujud, baca kandungan fail dan nyahserikannya ke dalam data cache. Kemudian tentukan sama ada data yang dicache telah tamat tempoh Jika ia telah tamat tempoh, padamkan fail dan kembalikan palsu. Akhirnya, data cache dikembalikan. Fungsi cache_set mula-mula menjana nama fail dengan menyulitkan $key MD5, kemudian menyimpan data cache dan masa tamat tempoh sebagai tatasusunan bersekutu, dan mensiri tatasusunan menjadi rentetan sebelum menulis ke fail. Akhir sekali, gunakan fungsi file_put_contents untuk menulis rentetan pada fail. 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);
}

在上述代码中,我们使用了两个函数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);
}

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

2. Storan pangkalan data

Storan pangkalan data ialah satu lagi kaedah storan berterusan yang biasa digunakan, yang menyimpan data cache dalam jadual pangkalan data. Berikut ialah contoh kod menggunakan storan pangkalan data:

rrreee

Dalam kod di atas, kami menggunakan dua fungsi cache_get dan cache_set untuk membaca dan menulis data beroperasi. Fungsi cache_get mula-mula mewujudkan sambungan dengan pangkalan data, dan kemudian bertanya sama ada data cache yang sepadan wujud dalam jadual data melalui pernyataan SQL. Jika data wujud dalam hasil pertanyaan, nilai medan data dikembalikan. Fungsi cache_set mula-mula mewujudkan sambungan dengan pangkalan data, kemudian memperoleh cap masa semasa serta tarikh tamat tempoh, melepaskan data melalui fungsi mysqli_real_escape_string dan akhirnya melaksanakan pernyataan SQL ke menukar data Masukkan ke dalam jadual pangkalan data. 🎜🎜3. Storan memori🎜🎜Storan memori ialah kaedah penyimpanan berterusan yang cekap Ia menyimpan data cache dalam ingatan Walaupun selepas aplikasi dimulakan semula atau pelayan dimulakan semula, data masih boleh dipulihkan. Berikut ialah contoh kod menggunakan storan memori: 🎜rrreee🎜Dalam kod di atas, kami menggunakan dua fungsi cache_get dan cache_set untuk membaca dan menulis data beroperasi. Fungsi cache_get mula-mula mencipta objek Memcached dan menambah alamat dan port pelayan Memcached melalui kaedah addServer. Kemudian gunakan kaedah get untuk mendapatkan data cache daripada memori dan mengembalikan data tersebut. Fungsi cache_set mula-mula mencipta objek Memcached dan menambah alamat dan port pelayan Memcached melalui kaedah addServer. Kemudian gunakan kaedah set untuk menyimpan data dalam ingatan. 🎜🎜Kesimpulan🎜🎜Artikel ini memperkenalkan storan berterusan dan strategi pemulihan cache data PHP, termasuk storan fail, storan pangkalan data dan storan memori. Dengan memilih kaedah storan yang betul, anda boleh meningkatkan prestasi aplikasi dan responsif berdasarkan keperluan sebenar. Saya berharap artikel ini dapat memberikan sedikit bantuan kepada pembaca dalam menggunakan caching data dalam pembangunan aplikasi PHP. 🎜

Atas ialah kandungan terperinci Analisis strategi penyimpanan dan pemulihan yang berterusan untuk cache data PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn