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
- 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
- ERR WAIT cannot be used with replica instancesWAIT cannot be used with replica instances (replica 인스턴스에서는 WAIT 사용 불가)