Heim  >  Artikel  >  Datenbank  >  So verwenden Sie Lazy Deletion Lazy Free in Redis

So verwenden Sie Lazy Deletion Lazy Free in Redis

WBOY
WBOYnach vorne
2023-05-26 23:37:041894Durchsuche

Verwenden Sie Lazy Deletion Lazy Free

Wenn der Schlüssel abläuft oder der Befehl DEL delete verwendet wird, entfernt Redis nicht nur das Objekt aus der globalen Hash-Tabelle, sondern gibt auch den vom Objekt zugewiesenen Speicher frei. Wenn ein großer Schlüssel gefunden wird, führt die Freigabe des Speichers dazu, dass der Hauptthread blockiert wird.

Zu diesem Zweck hat Redis 4.0 den UNLINK-Befehl eingeführt, der den Vorgang der Freigabe des Objektspeichers zur Ausführung in den Bio-Hintergrundthread legt. Dies reduziert effektiv die Blockierung des Hauptthreads.

Redis 6.0 geht noch einen Schritt weiter und führt Lazy-Free-bezogene Konfigurationen ein. Wenn die Konfiguration aktiviert ist, wird der Vorgang „Objekt freigeben“ innerhalb der Schlüsselablauf- und DEL-Befehle „asynchron ausgeführt“.

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

Es wird empfohlen, auf mindestens Redis 6 zu aktualisieren und Lazy-free zu aktivieren.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Lazy Deletion Lazy Free in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen