gpt4 book ai didi

redis - 模仿慢速 Redis 服务器

转载 作者:IT王子 更新时间:2023-10-29 06:00:53 26 4
gpt4 key购买 nike

我正在寻找一种最简单的方法来模仿慢速 Redis 服务器(从我现在正在调试的客户端的角度来看)。

理想情况下它应该是 DEBUG SLEEP <seconds>命令,但 AFAIK 没有这样的东西。

我可以使用,比方说,BLPOP对于阻塞读取——但这需要一个单独的线程来解锁它……有更简单的方法吗?

最佳答案

实际上,有一个 debug sleep 命令可以完全满足您的需求。它在 debug.c 文件中定义为:

} else if (!strcasecmp(c->argv[1]->ptr,"sleep") && c->argc == 3) {
double dtime = strtod(c->argv[2]->ptr,NULL);
long long utime = dtime*1000000;

usleep(utime);
addReply(c,shared.ok);
} else {

请注意,它会阻止整个 Redis 事件循环(所有连接),而 BLPOP 只会阻止一个连接。

> ./redis-cli debug sleep 2
... 2 seconds wait ...
OK

使用 BLPOP,您不需要第二个线程,因为您可以指定超时:

> ./redis-cli blpop dummy_key_which_does_not_exist 2
... 2 seconds wait ...
(nil)

另一种使 Redis 无响应的方法是发送 STOP 和 CONT 信号。获得实例的 pid 后,只需启动:

kill -STOP $pid
sleep 1
kill -CONT $pid

通过这个信号技巧,redis 实例的所有线程都将被卡住(即不仅是事件循环)。这包括 I/O 后台线程。

关于redis - 模仿慢速 Redis 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14017215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com