Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis是单线程的。那我为什么要用生菜呢?_Redis_Lettuce - Fatal编程技术网

Redis是单线程的。那我为什么要用生菜呢?

Redis是单线程的。那我为什么要用生菜呢?,redis,lettuce,Redis,Lettuce,在Redis 4.0之后,Redis可以执行多线程的一些功能(1.删除背景中的对象等),但Redis通常还是使用单线程。 所以我想莴苣是没用的。莴苣是redis客户端,它可以在一个连接中使用多个线程,但redis只能在一个连接中使用单个线程 你能推荐Redis客户端使用莴苣吗?为什么?因为您不仅要在Redis执行命令时花费时间,还要传输数据(发送命令、接收结果)。在单线程模式下传输时,Redis不工作。当Redis工作时,不会发生传输。多个连接或一个流水线连接可以帮助您饱和带宽和CPU周期 l

在Redis 4.0之后,Redis可以执行多线程的一些功能(1.删除背景中的对象等),但Redis通常还是使用单线程。

所以我想莴苣是没用的。莴苣是redis客户端,它可以在一个连接中使用多个线程,但redis只能在一个连接中使用单个线程


你能推荐Redis客户端使用莴苣吗?为什么?

因为您不仅要在Redis执行命令时花费时间,还要传输数据(发送命令、接收结果)。在单线程模式下传输时,Redis不工作。当Redis工作时,不会发生传输。多个连接或一个流水线连接可以帮助您饱和带宽和CPU周期

luttece不仅仅是关于速度。它还可以帮助您使用异步和反应式API更好地组织代码

回到性能主题,这是一个简单的基准测试,可以大致了解线程和池的影响。请注意,虽然池化速度稍慢(您在池操作上花费了一些时间),但它允许您隔离操作(因此错误不会影响其他线程)并使用
MULTI
和blocking命令

以下是我的结果(本地系统有4个内核,远程系统CPU大约慢2倍):

线程数=1 线程数=2 线程数=4
您可以在这里看到,性能可以很好地随线程数扩展,因此莴苣并非无用。

因为您不仅要在Redis执行命令时花费时间,还要在传输数据(发送命令、接收结果)时花费时间。在单线程模式下传输时,Redis不工作。当Redis工作时,不会发生传输。多个连接或一个流水线连接可以帮助您饱和带宽和CPU周期

luttece不仅仅是关于速度。它还可以帮助您使用异步和反应式API更好地组织代码

回到性能主题,这是一个简单的基准测试,可以大致了解线程和池的影响。请注意,虽然池化速度稍慢(您在池操作上花费了一些时间),但它允许您隔离操作(因此错误不会影响其他线程)并使用
MULTI
和blocking命令

以下是我的结果(本地系统有4个内核,远程系统CPU大约慢2倍):

线程数=1 线程数=2 线程数=4
您可以在这里看到,性能可以很好地随线程数扩展,因此,莴苣并非无用。

您可以分享在莴苣的连接池上配置连接数的示例代码吗?未能找到任何好的源代码。
var client=RedisClient.create(uri);var config=新的GenericObjectPoolConfig();config.setMaxTotal(5);var pool=ConnectionPoolSupport.createGenericObjectPool(客户端::connect,新的GenericObjectPoolConfig())能否请共享用于在连接池上配置莴苣连接数的示例代码?未能找到任何好的源代码。
var client=RedisClient.create(uri);var config=新的GenericObjectPoolConfig();config.setMaxTotal(5);var pool=ConnectionPoolSupport.createGenericObjectPool(客户端::connect,新的GenericObjectPoolConfig())
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
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
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