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 に答える