Redis
 sql >> Base de données >  >> NoSQL >> Redis

Redis est un thread unique. Alors pourquoi devrais-je utiliser de la laitue?

Parce que vous passez du temps non seulement pendant que Redis exécute des commandes, mais aussi à transférer des données (envoyer des commandes, recevoir des résultats). En mode thread unique pendant le transfert, Redis ne fonctionne pas. Pendant que Redis fonctionne, aucun transfert ne se produit. Plusieurs connexions ou une connexion en pipeline sont là pour vous aider à saturer à la fois la bande passante et les cycles du processeur.

Et la lutte n'est pas qu'une question de vitesse. Il vous aide également à mieux organiser votre code avec une API asynchrone et réactive.

Revenons au sujet des performances, voici une référence simple pour obtenir une compréhension générale de l'impact du threading et de la mise en commun. Notez que bien que la mise en pool soit un peu plus lente (vous passez du temps sur les opérations de pool), elle vous permet d'isoler les actions (afin qu'une erreur n'affecte pas les autres threads) et d'utiliser MULTI et les commandes de blocage.

Voici mes résultats (le système local a 4 cœurs, le processeur du système distant est environ 2 fois plus lent) :

Fils=1

Benchmark              (address)   Mode  Cnt      Score      Error  Units
LettuceThreads.pooled     socket  thrpt   25  35389.995 ± 1325.198  ops/s
LettuceThreads.pooled  localhost  thrpt   25  32075.870 ±  416.220  ops/s
LettuceThreads.pooled     remote  thrpt   25   3883.193 ±   67.622  ops/s
LettuceThreads.shared     socket  thrpt   25  39419.772 ± 1966.023  ops/s
LettuceThreads.shared  localhost  thrpt   25  34293.245 ± 1737.349  ops/s
LettuceThreads.shared     remote  thrpt   25   3919.251 ±   49.897  ops/s

Threads=2

Benchmark              (address)   Mode  Cnt      Score      Error  Units
LettuceThreads.pooled     socket  thrpt   25  56938.187 ± 2727.772  ops/s
LettuceThreads.pooled  localhost  thrpt   25  49420.748 ± 2091.631  ops/s
LettuceThreads.pooled     remote  thrpt   25   7791.706 ±  133.507  ops/s
LettuceThreads.shared     socket  thrpt   25  81195.900 ± 1593.424  ops/s
LettuceThreads.shared  localhost  thrpt   25  78404.688 ± 3878.044  ops/s
LettuceThreads.shared     remote  thrpt   25   3992.023 ±   39.092  ops/s

Threads=4

Benchmark              (address)   Mode  Cnt       Score      Error  Units
LettuceThreads.pooled     socket  thrpt   25   87345.126 ± 8149.009  ops/s
LettuceThreads.pooled  localhost  thrpt   25   75003.031 ± 4481.289  ops/s
LettuceThreads.pooled     remote  thrpt   25   15807.410 ±  225.376  ops/s
LettuceThreads.shared     socket  thrpt   25  169112.489 ± 3749.897  ops/s
LettuceThreads.shared  localhost  thrpt   25  115464.778 ± 5099.728  ops/s
LettuceThreads.shared     remote  thrpt   25    7952.492 ±  133.521  ops/s

Vous pouvez voir ici que les performances évoluent très bien avec le nombre de threads, donc la laitue n'est pas inutile.