我正在尝试调试我遇到的一些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
在documentation page for the SET command我发现:
Status code reply: always OK since SET can't fail.
关于明确行为的任何见解?
答案 0 :(得分:8)
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
它并不是用这种方式编写的,但基本思想归结为:在处理命令之前正在检查内存,因此即使命令不能失败,如果有&#,也会返回错误响应39;无论命令的实际响应如何,都没有记忆。