cache (operasi rantaian 15)
cache boleh digunakan untuk kaedah pilih, cari, nilai dan lajur, serta kaedah derivatifnya Selepas menggunakan kaedah cache, operasi pertanyaan pangkalan data tidak akan dilakukan lagi dalam tempoh sah cache, tetapi data dalam cache akan diperolehi terus Mengenai data Jenis dan tetapan cache boleh didapati di bahagian cache.
Berikut ialah contoh, kami menggunakan kaedah cache untuk kaedah cari seperti berikut:
Db::table('user')->where('id',5)->cache(true)->find();
Hasil pertanyaan pertama akan dicache Apabila data yang sama disoal buat kali kedua, kandungan dalam cache akan dikembalikan terus tanpa Lakukan operasi pertanyaan pangkalan data sekali lagi.
Secara lalai, tempoh sah cache ditentukan oleh parameter konfigurasi cache lalai, tetapi kaedah cache boleh ditentukan secara berasingan, contohnya:
Db::table('user')->cache(true,60)->find(); // 或者使用下面的方式 是等效的 Db::table('user')->cache(60)->find();
bermakna tempoh sah cache keputusan pertanyaan ialah 60 saat. Kaedah
cache boleh menentukan pengecam cache:
Db::table('user')->cache('key',60)->find();
Menentukan pengecam cache pertanyaan boleh menjadikan cache pertanyaan lebih cekap.
Dengan cara ini, data cache pertanyaan boleh diperoleh terus secara luaran melalui kelas thinkCache, contohnya:
$result = Db::table('user')->cache('key',60)->find(); $data = \think\facade\Cache::get('key');
Kaedah cache menyokong penetapan tag cache, contohnya:
Db::table('user')->cache('key',60,'tagName')->find();
Cache kemas kini automatik
Cache kemas kini automatik di sini merujuk kepada Setelah data dikemas kini atau dipadamkan, cache akan dikosongkan secara automatik (ia akan dicache semula secara automatik apabila ia diambil semula).
Apabila anda memadam atau mengemas kini data, anda boleh memanggil kaedah cache kekunci yang sama, yang akan mengemas kini (kosongkan) cache secara automatik, contohnya:
Db::table('user')->cache('user_data')->select([1,3,5]); Db::table('user')->cache('user_data')->update(['id'=>1,'name'=>'thinkphp']); Db::table('user')->cache('user_data')->select([1,3,5]);
Data pertanyaan terakhir tidak akan terjejas oleh cache pertanyaan pertama, memastikan bahawa pertanyaan dan Kemas kini atau padam menggunakan pengecam cache yang sama akan mengosongkan cache secara automatik.
Jika anda menggunakan kunci utama untuk bertanya dan mengemas kini (atau memadam), cache akan dikemas kini secara automatik tanpa menyatakan ID cache
Db::table('user')->cache(true)->find(1); Db::table('user')->cache(true)->where('id', 1)->update(['name'=>'thinkphp']); Db::table('user')->cache(true)->find(1);