草庐IT

performance - 对阻塞命令(例如 blpop)的 Redis 延迟进行基准测试?

我知道典型的Redis延迟小于1毫秒,但我想知道lpush之间延迟的典型时间(以微秒/毫秒为单位)到一个空列表,和一个blpop返回之前阻止它的那个。我不太确定如何衡量这一点,但我也对内部发生的事情感到好奇,而blpopdocumentation似乎并没有在这里潜水太深。感谢您提供任何见解。 最佳答案 我没有基准测试,但它有助于理解延迟几乎是计算机响应它们正在监听的端口变化的时间(即套接字-可能在微秒的数量级),然后当然,redis服务器和redis客户端之间可能存在的任何网络,这不是redis可以影响的。

Scala Redis 驱动程序 - 使用 blpop 命令

我正在尝试使用blpopRedis命令,它将在10秒超时后返回一些Long值:valr=newRedisClient("10.0.0.15",6379)implicitvalparseV=newcom.redis.serialization.Parse[Long](f=>{ByteBuffer.wrap(f).getLong})valrs=r.blpop[String,Long](10,"queue")rsmatch{caseSome(s)=>println(s._2)caseNone=>println("timeOut");}但是在超时时我得到了下面的异常,有趣的是,如果返回的对象很

python - python中的Redis BLPOP超时

我有这个测试代码:importredisr=redis.Redis()response=r.blpop('testkey',timeout=1)printresponse多次运行,这总是比1秒长得多,通常将近2秒。我的redis服务器是本地的,所以延迟不应该影响它。Redis是否没有准确计时超时,还是python客户端正在做的事情?谢谢 最佳答案 好吧,对于您的程序,除了blpop超时之外,您还必须考虑Python引擎的启动时间、包的导入、与Redis的连接的建立。此外,设置超时并不能保证最长等待时间。它保证了在没有任何东西可弹出时

redis - BLPOP 和 MISCONF 配置 Redis 保存 RDB 快照

我们在ELK堆栈中使用Redis来缓冲我们系统之间的消息和Elasticsearch。消息由自定义log4j-appender推送到redis并由logstash弹出。现在出现了问题:如果redis队列运行满(因为例如Elasticsearch没有运行),redis切换到一个模式,不再允许持久更改。这是有道理的,但是从Redis弹出消息(因为例如ES再次启动)会减少redis中队列的大小。如果队列已满,是否可以配置redis以允许blpop?最好的问候本杰明 最佳答案 来自redis.conf:BydefaultRediswills

redis - BLPOP 和 MISCONF 配置 Redis 保存 RDB 快照

我们在ELK堆栈中使用Redis来缓冲我们系统之间的消息和Elasticsearch。消息由自定义log4j-appender推送到redis并由logstash弹出。现在出现了问题:如果redis队列运行满(因为例如Elasticsearch没有运行),redis切换到一个模式,不再允许持久更改。这是有道理的,但是从Redis弹出消息(因为例如ES再次启动)会减少redis中队列的大小。如果队列已满,是否可以配置redis以允许blpop?最好的问候本杰明 最佳答案 来自redis.conf:BydefaultRediswills

php - 需要有关 BLPOP Predis PHP 的支持

我正在使用BLPOP构建聊天消息系统长轮询。我使用PredisPHP。当我运行test/get->它以30秒超时运行okie。在运行test/get时,我尝试通过test/push推送数据,但它有问题。推送不会立即执行,除非test/get完成。test/push需要30秒。我使用命令行推送数据:RPUSHmessage:testhello->它立即执行,非常好。require'./vendor/autoload.php';classTestextendsCI_Controller{public$keyChat='message:test';publicfunction__constr

php - 需要有关 BLPOP Predis PHP 的支持

我正在使用BLPOP构建聊天消息系统长轮询。我使用PredisPHP。当我运行test/get->它以30秒超时运行okie。在运行test/get时,我尝试通过test/push推送数据,但它有问题。推送不会立即执行,除非test/get完成。test/push需要30秒。我使用命令行推送数据:RPUSHmessage:testhello->它立即执行,非常好。require'./vendor/autoload.php';classTestextendsCI_Controller{public$keyChat='message:test';publicfunction__constr

asynchronous - 有没有办法在 Redis 中获取锁? ( Node .js)

我的Node.js应用程序接受来自外部的连接。每个连接处理程序读取Redis上的一个SET,最终修改该集合本身,然后继续。问题是与此同时,另一个异步连接可以尝试读取同一个SET并尝试更新它或根据读取的内容决定下一步。我知道Redis尽最大努力实现原子性,但这对我的用例来说还不够。想一想:读取集合以了解它是否已满(有一个业务规则)。如果它已满,则会发生一些事情。问题是如果只剩下一个插槽,两个半并发连接可能认为每个都是最后一个。我溢出了。我有办法让连接“等待”很短的时间,而另一个最终需要更新设置状态吗?我认为这是一个极端情况,非常非常不幸......但你知道:)使用另一把key作为“锁”是

asynchronous - 有没有办法在 Redis 中获取锁? ( Node .js)

我的Node.js应用程序接受来自外部的连接。每个连接处理程序读取Redis上的一个SET,最终修改该集合本身,然后继续。问题是与此同时,另一个异步连接可以尝试读取同一个SET并尝试更新它或根据读取的内容决定下一步。我知道Redis尽最大努力实现原子性,但这对我的用例来说还不够。想一想:读取集合以了解它是否已满(有一个业务规则)。如果它已满,则会发生一些事情。问题是如果只剩下一个插槽,两个半并发连接可能认为每个都是最后一个。我溢出了。我有办法让连接“等待”很短的时间,而另一个最终需要更新设置状态吗?我认为这是一个极端情况,非常非常不幸......但你知道:)使用另一把key作为“锁”是

php - Predis 上 BLPOP 的正确语法是什么?

我是这样做的:$r=newPredis\Client($single_server,$options);$retval=$r->blpop('queue:query');但是我得到这个错误:ERR'blpop'命令的参数数量错误每当我这样做时$r=newPredis\Client($single_server,$options);$retval=$r->blpop('queue:query',0);我得到错误:从服务器读取行时出错从redis-cli执行它redis127.0.0.1:6379>BLPOPqueue:query(error)ERRwrongnumberofargumen