ERR bit offset is not an integer or out of range: Bit offset is not an integer or out of range(ビットオフセットが整数でないか範囲外)
Redis意味
SETBIT/GETBIT/BITCOUNT などのビット操作に与えたビットオフセットが無効: 整数ではない、または許容範囲外である。Redis はそのオフセットでビット操作を実行できない。
原因
オフセットとして数値以外の値を渡した、負のオフセットを使用した、または許容上限を超える非常に大きなオフセットを指定した (ビット文字列は最大 512 MB、すなわち約 2^32 ビット)。ビットマップベースのカウンタ/フラグ構造での計算誤りから生じる。
対処方法
オフセットが許容範囲内 (0 ~ 約 2^32-1。文字列は最大 512 MB) の非負整数であることを確認する。オフセットの計算 (例: ユーザー ID から導出したもの) がオーバーフロー/負の値にならないか検証する。非常に大きなオフセットが必要な場合は、データを複数のキーに分割する設計 (シャーディング) にする。
同じデータベースの他の項目
- ERR SELECT is not allowed in cluster modeSELECT is not allowed in cluster mode(クラスタモードでは SELECT は許可されない)
- ERR wrong number of arguments for commandWrong number of arguments for command(コマンドの引数の数が誤っている)
- ERR Background save already in progressBackground save already in progress(バックグラウンド保存が既に進行中)
- ERR Protocol error: invalid multibulk lengthProtocol error: invalid multibulk length(プロトコルエラー: 無効な multibulk 長)
- ERR Number of keys can't be greater than number of argsEVAL/EVALSHA: numkeys exceeds argument count(numkeys が引数の数を超えている)
- ERR WATCH inside MULTI is not allowedWATCH inside MULTI is not allowed(MULTI 内の WATCH は許可されない)
- ERR WAIT cannot be used with replica instancesWAIT cannot be used with replica instances(WAIT はレプリカインスタンスでは使用できない)