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