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 SET命令可以';我不会失败,但可以吗?_Redis - Fatal编程技术网

Redis SET命令可以';我不会失败,但可以吗?

Redis SET命令可以';我不会失败,但可以吗?,redis,Redis,我正在尝试调试我遇到的一些Redis问题,并附带了一些关于SET命令的非决定性文档 在我的Redis配置中;我有以下几行(代码片段): 在网上,我发现: 对最终行为有何见解?tl;dr:如果redis实例内存不足,SET将返回错误响应 从中的源代码可以看出,当处理命令时,流程基本上是这样的(伪代码): 它不是这样写的,但基本思想可以归结为:在处理命令之前检查内存,因此即使命令不能失败,如果没有内存,不管命令的实际响应如何,都会返回错误响应。+1,没有设置可以返回错误,但是,如果您将Redis配置

我正在尝试调试我遇到的一些Redis问题,并附带了一些关于SET命令的非决定性文档

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

在网上,我发现:


对最终行为有何见解?

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

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


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

+1,没有设置可以返回错误,但是,如果您将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
Status code reply: always OK since SET can't fail.
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