Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menggunakan teknologi caching Redis dalam PHP untuk mengoptimumkan pembacaan dan penulisan pangkalan data

Menggunakan teknologi caching Redis dalam PHP untuk mengoptimumkan pembacaan dan penulisan pangkalan data

WBOY
WBOYasal
2023-06-20 13:48:071237semak imbas

Dengan perkembangan teknologi Internet yang berterusan, jumlah data semakin besar, dan tekanan membaca dan menulis pangkalan data juga semakin meningkat, pengalaman pengguna kami perlu mengekalkan tindak balas yang sangat pantas pada setiap masa masa, teknologi caching menjadi lebih dan lebih penting. Artikel ini akan memperkenalkan cara menggunakan teknologi caching Redis untuk mengoptimumkan pembacaan dan penulisan pangkalan data aplikasi PHP.

1. Apakah itu Redis?

Redis hanyalah sistem storan nilai kunci. Tidak seperti sistem storan nilai kunci lain, Redis menyokong penyimpanan data berbilang jenis data (rentetan, senarai, set, set tertib, jadual cincang) dan menyediakan set perintah operasi yang kaya. Redis ialah pangkalan data storan dalam ingatan yang turut menyokong kegigihan data ke cakera dan boleh menggantikan sepenuhnya sistem cache tradisional.

2. Mengapa menggunakan Redis?

Aliran aplikasi konvensional biasanya aplikasi membaca data daripada pangkalan data dan kemudian membentangkan data kepada pengguna dalam beberapa bentuk. Dalam proses ini, perkara yang paling memakan masa ialah membaca data daripada pangkalan data. Cache Redis boleh membantu kami menyimpan sebahagian daripada data ke dalam memori, supaya bacaan berulang boleh diperolehi terus daripada cache, mengelakkan pertanyaan kerap ke pangkalan data, mengurangkan tekanan pada pangkalan data, meningkatkan kecekapan membaca dan menulis, dan dengan itu mengurangkan kos sistem masa tindak balas dan meningkatkan daya pengeluaran keseluruhan sistem.

3. Bagaimana untuk menggunakan Redis dalam aplikasi PHP?

Sebelum menggunakan Redis, kita perlu memasang Redis terlebih dahulu. Proses pemasangan Redis dan sambungan PHP tidak akan diperincikan di sini Kami menganggap bahawa pembaca telah memasang sambungan Redis dan PHP. Seterusnya kami memperkenalkan cara menggunakan Redis dalam aplikasi PHP.

  1. Cache Data

Dalam aplikasi, anda boleh menetapkan dan mendapatkan data cache melalui set Redis dan mendapatkan arahan.

//设置缓存
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);  //连接到Redis
$redis->set('name', 'redis cache'); //设置缓存
$redis->expire('name', 3600);       //设置过期时间

//获取缓存
$redis = new Redis();
$redis->connect('127.0.0.1', 6379); //连接到Redis
$name = $redis->get('name');         //获取缓存
if($name){                           //判断缓存是否存在
    echo $name;
}else{                               //不存在则从数据库中读取数据
    $name = 'get data from database';
    $redis->set('name', $name);
    $redis->expire('name', 3600);
    echo $name;
}

Dalam kod di atas, kami mula-mula menentukan sama ada terdapat data cache dalam Redis Jika ada, dapatkannya secara langsung, dapatkannya dari pangkalan data, tetapkan cache dan tetapkan masa tamat tempoh.

  1. Kendalian kumpulan data tembolok

Kadangkala kami perlu mencache berbilang keping data pada satu masa Perintah berbilang dan eksekutif Redis membolehkan kami mengendalikan data cache secara berkumpulan.

//批量设置缓存
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->multi();
$redis->set('name1', 'cache1');
$redis->set('name2', 'cache2');
$redis->set('name3', 'cache3');
$redis->exec();

//批量获取缓存
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->multi();
$redis->get('name1');
$redis->get('name2');
$redis->get('name3');
$result = $redis->exec();

Dalam kod di atas, kita boleh menggunakan perintah multi dan exec untuk melaksanakan berbilang operasi menetapkan cache atau mendapatkan berbilang cache.

  1. Cache pemisahan baca dan tulis

Dalam aplikasi, sesetengah operasi data adalah kerap dan tidak memerlukan integriti data yang tinggi, seperti status log masuk, dsb. Anda boleh mempertimbangkan untuk menyimpan data ini Cache ke Redis, dan data yang lebih kritikal seperti nama pengguna, kata laluan, e-mel, dll. boleh disimpan dalam pangkalan data. Kelebihan ini adalah untuk meningkatkan kecekapan membaca dan menulis, dan tidak akan menyebabkan ketidakkonsistenan data pangkalan data disebabkan oleh perubahan dalam data cache.

//缓存数据
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('login:userid', '1');       //将登录状态存储到Redis中
$redis->expire('login:userid', 3600);

//读取数据
//先从Redis中读取
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$loginUserId = $redis->get('login:userid');
//如果Redis中不存在,则从数据库中读取
if(empty($loginUserId)){
    $sql = "select id from user where username='admin'";
    $result = $mysqli->query($sql)->fetch_assoc();
    $loginUserId = $result['id'];
    //将读取到的数据存储到Redis缓存中
    $redis->set('login:userid', $loginUserId);
    $redis->expire('login:userid', 3600);
}

Dalam kod di atas, kami menyimpan status log masuk pengguna dalam Redis Semasa membaca, kami mula-mula membacanya dari cache Redis Jika ia tidak wujud dalam Redis, kami membacanya dari pangkalan data.

4. Ringkasan

Menggunakan teknologi caching Redis boleh meningkatkan prestasi baca dan tulis aplikasi PHP, mencapai penyahgandingan antara aplikasi dan pangkalan data, mengurangkan masa tindak balas sistem dan meningkatkan pengalaman pengguna . Apabila menggunakan cache Redis, anda perlu memberi perhatian kepada susunan penulisan dan pembacaan, dan tetapkan tempoh sah data cache mengikut situasi sebenar. Perlu diingatkan bahawa dalam situasi konkurensi tinggi, pengedaran, runtuhan cache, dll., teknologi dan kaedah operasi dan penyelenggaraan yang sepadan perlu digabungkan untuk memastikan kestabilan dan kebolehpercayaan sistem cache.

Atas ialah kandungan terperinci Menggunakan teknologi caching Redis dalam PHP untuk mengoptimumkan pembacaan dan penulisan pangkalan data. 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