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). Проверяйте расчёты смещений (например, получаемых из идентификаторов пользователей) на переполнение/отрицательные значения. Если нужны очень большие смещения, спроектируйте данные с разбиением на несколько ключей (шардинг).
Ещё по этой СУБД
- 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
- ERR Number of keys can't be greater than number of argsEVAL/EVALSHA: numkeys exceeds argument count
- 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