5

我正在尝试调试我遇到的一些 Redis 问题,并且来自一些关于 SET 命令的不确定文档。

在我的 Redis 配置中;我有以下几行(片段):

# Note: with all the kind of policies, Redis will return an error on write
#       operations, when there are not suitable keys for eviction.
#
#       At the date of writing this commands are: set setnx setex append

在我发现的 SET 命令的文档页面上:

Status code reply: always OK since SET can't fail.

关于最终行为的任何见解?

4

1 回答 1

11

tl;dr:如果 redis 实例内存不足,SET 将返回错误响应。

据我从redis.c的源代码中可以看出,基本上当要处理命令时,流程是这样的(伪代码):

IF memory is needed
    IF we can free keys
        Free keys
        Process the command
            SET -> process and return OK response
    ELSE return error response
ELSE
    Process command
        SET -> process and return OK response

不完全是这样写的,但基本思想归结为:在处理命令之前检查内存,所以即使命令不会失败,如果没有内存,无论实际响应如何,都会返回错误响应命令。

于 2012-10-16T11:49:29.190 回答