sql >> Base de Datos >  >> NoSQL >> Redis

Redis es un solo hilo. Entonces, ¿por qué debería usar lechuga?

Porque pasa tiempo no solo mientras Redis ejecuta comandos, sino también transfiriendo datos (enviando comandos, recibiendo resultados). En el modo de subproceso único mientras realiza la transferencia, Redis no funciona. Mientras Redis funciona, no se produce ninguna transferencia. Múltiples conexiones o una conexión canalizada están aquí para ayudarlo a saturar tanto el ancho de banda como los ciclos de CPU.

Y luttece no se trata solo de velocidad. También te ayuda a organizar mejor tu código con una API asíncrona y reactiva.

Volviendo al tema de rendimiento, aquí hay un punto de referencia simple para obtener una comprensión general del impacto de subprocesamiento y agrupación. Tenga en cuenta que, si bien la agrupación es un poco más lenta (pasa algo de tiempo en las operaciones de la agrupación), le permite aislar acciones (para que un error no afecte a otros subprocesos) y usar MULTI y bloqueo de comandos.

Estos son mis resultados (el sistema local tiene 4 núcleos, la CPU del sistema remoto es aproximadamente 2 veces más lenta):

Hilos=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

Hilos=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

Hilos=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

Puede ver aquí que el rendimiento escala muy bien con la cantidad de subprocesos, por lo que la lechuga no es inútil.