Apabila kunci tamat tempoh atau arahan padam DEL digunakan, Redis bukan sahaja akan mengalih keluar objek daripada jadual cincang global, tetapi juga melepaskan memori yang diperuntukkan oleh objek. Apabila kunci besar ditemui, melepaskan memori akan menyebabkan benang utama disekat.
Untuk tujuan ini, Redis 4.0 memperkenalkan arahan UNLINK, yang meletakkan operasi melepaskan memori objek ke dalam benang latar belakang bio untuk dilaksanakan. Ini berkesan mengurangkan penyekatan benang utama.
Redis 6.0 melangkah lebih jauh dan memperkenalkan konfigurasi berkaitan Lazy-free. Apabila konfigurasi didayakan, operasi "release object" akan "dilaksanakan secara tak segerak" dalam tempoh tamat kekunci dan arahan DEL.
void delCommand(client *c) { delGenericCommand(c,server.lazyfree_lazy_user_del);}void delGenericCommand(client *c, int lazy) { int numdel = 0, j; for (j = 1; j < c->argc; j++) { expireIfNeeded(c->db,c->argv[j]); // 开启 lazy free 则使用异步删除 int deleted = lazy ? dbAsyncDelete(c->db,c->argv[j]) : dbSyncDelete(c->db,c->argv[j]); ... }}
Adalah disyorkan untuk meningkatkan kepada sekurang-kurangnya Redis 6 dan mendayakan Lazy-free.
Atas ialah kandungan terperinci Cara menggunakan pemadaman malas Lazy free dalam Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!