Maison  >  Article  >  base de données  >  Comment utiliser la suppression paresseuse Lazy free dans Redis

Comment utiliser la suppression paresseuse Lazy free dans Redis

WBOY
WBOYavant
2023-05-26 23:37:041894parcourir

Utiliser la suppression paresseuse Lazy free

Lorsque la clé expire ou que la commande DEL delete est utilisée, Redis supprimera non seulement l'objet de la table de hachage globale, mais libérera également la mémoire allouée par l'objet. Lorsqu'une grosse clé est rencontrée, libérer de la mémoire entraînera le blocage du thread principal.

À cette fin, Redis 4.0 a introduit la commande UNLINK, qui place l'opération de libération de la mémoire objet dans le thread d'arrière-plan bio pour exécution. Cela réduit efficacement le blocage du thread principal.

Redis 6.0 va encore plus loin et introduit des configurations associées sans paresseux. Lorsque la configuration est activée, l'opération « libérer l'objet » sera « exécutée de manière asynchrone » dans le cadre de l'expiration de la clé et des commandes 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]);
        ...
    }}

Il est recommandé de mettre à niveau vers au moins Redis 6 et d'activer Lazy-free.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer