2017-01-13 2 views
0

Dans ce link, il est donné que REDIS EST SIMPLE FILETÉ. Mais dans ce link, il est donné queDes choses contradictoires à propos de redis working: redis est-il single threaded ou multithread?

« la commande effectue la mémoire réelle récupération dans un thread différent , il est donc ne bloque pas »

Alors, quel est le point ? Redis va-t-il bloquer une commande jusqu'à ce que la commande précédente soit terminée ou qu'elle soit réellement multithread?

+0

jetez un coup d'oeil [ici] (http://stackoverflow.com/a/10495458/1530987) – crowchirp

Répondre

0

Redis utilise actuellement plusieurs threads. Ce n'est pas vraiment "multi-threadé" mais parce qu'il utilise un seul thread pour répondre aux requêtes.

Voici un port multi-thread de Redis. https://github.com/grisha/thredis Mais il est livré avec quelques limitations, par ex. il ne peut pas être utilisé comme maître de réplication.

+0

Vous dites qu'il utilise un fil unique pour répondre aux demandes. Vous voulez dire par là qu'une seule commande est exécutée une fois. Ce qui à son tour signifie que redis bloque l'exécution des autres commandes jusqu'à ce que la commande en cours soit terminée. Mais la commande UNLINK semble ne pas bloquer d'autres commandes. C'est ce que je trouve contradictoire. – Jsmith

+1

Il marque les clés comme supprimées dans le thread principal 'répondant' mais un autre thread fera le nettoyage de la mémoire en arrière-plan. Donc le fil principal est bloqué le moins longtemps possible tandis qu'un autre fil fait la majeure partie du travail de manière non bloquante –

+0

@Chris Tanner Merci – Jsmith