Операции с битовыми картами
В Managed Valkey все управление битовыми картами выполняется командами Valkey. С полным списком команд Valkey вы можете ознакомиться в официальной документации Valkey.
Обратите внимание, что в Managed Valkey некоторые команды Valkey недоступны.
Прочитать значение бита
Заголовок раздела «Прочитать значение бита»Чтобы прочитать значение бита, используйте команду GETBIT.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Проверьте тип значения ключа. Для существующего ключа должно вернуться значение
string.Выполните команду:
text GETBIT <имя ключа> <смещение>В команде
<смещение>— неотрицательный номер бита, начиная с0. В каждом байте нумерация идет от старшего бита к младшему. Выбирайте позицию в соответствии со схемой хранения данных приложения.Команда вернет
0или1. Если ключ не существует или смещение выходит за пределы строки, вернется0. Значение ключа сохранится. При другом типе значения команда вернет ошибку.
Получить количество установленных битов
Заголовок раздела «Получить количество установленных битов»Чтобы получить количество битов со значением 1, используйте команду BITCOUNT.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Проверьте тип значения ключа. Для существующего ключа должно вернуться значение
string.Выполните команду:
text BITCOUNT <имя ключа> [<начало> <конец> [BYTE | BIT]]В команде:
<начало>и<конец>— границы диапазона, включая обе границы. Без диапазона будет обработана вся строка.BYTE— указать границы в байтах. Этот вариант будет использован по умолчанию.BIT— указать границы в битах.
Индексация начинается с
0. Отрицательные границы отсчитываются от конца строки в выбранных единицах.-1означает последний байт или бит.Команда вернет количество установленных битов. Если ключ не существует или диапазон пуст, вернется
0. Значение ключа сохранится.
Найти первый бит с указанным значением
Заголовок раздела «Найти первый бит с указанным значением»Чтобы найти первый бит со значением 0 или 1, используйте команду BITPOS.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Проверьте тип значения ключа. Для существующего ключа должно вернуться значение
string.Выполните команду:
text BITPOS <имя ключа> <значение бита> [<начало> [<конец> [BYTE | BIT]]]В команде:
<значение бита>—0или1.<начало>и<конец>— границы поиска, включая обе границы. По умолчанию границы задаются в байтах.BITпереключит их на биты.- Отрицательные границы — позиции от конца строки в выбранных единицах.
Команда вернет номер найденного бита от начала всей строки, независимо от границ поиска. Если бит
1не найден, вернется-1.При поиске
0без конечной границы строка будет считаться дополненной нулевыми битами справа. Если все имеющиеся биты равны1, вернется позиция первого бита после строки. При явно заданном конце поиск ограничится диапазоном: если нулевого бита в нем нет, вернется-1.Для несуществующего ключа при поиске без диапазона вернется
0для бита0или-1для бита1.
Прочитать битовые поля
Заголовок раздела «Прочитать битовые поля»Чтобы прочитать целые числа из битовых полей без изменения строки, используйте команду BITFIELD_RO.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Проверьте тип значения ключа. Для существующего ключа должно вернуться значение
string.Выполните команду:
text BITFIELD_RO <имя ключа> GET <тип поля> <смещение> [GET <тип поля> <смещение> ...]В команде:
<тип поля>—iи число битов для знакового числа, напримерi16, илиuи число битов для беззнакового, напримерu8. Допустимыi1–i64иu1–u63.<смещение>— неотрицательная позиция первого бита поля. Запись#Nозначает смещение наNполей указанной ширины. Например, дляu8смещение#2равно16битам.
Выбирайте ширину и позиции полей в соответствии со схемой хранения данных приложения.
Команда вернет список чисел в порядке операций
GET. Недостающие биты будут прочитаны как нулевые. Если ключ не существует, для каждого поля вернется0, а ключ не будет создан.
Установить значение бита
Заголовок раздела «Установить значение бита»Чтобы установить или сбросить отдельный бит, используйте команду SETBIT.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Проверьте тип значения ключа. Для существующего ключа должно вернуться значение
string.Выполните команду:
text SETBIT <имя ключа> <смещение> <значение бита>В команде:
<смещение>— номер бита от0до4294967295.<значение бита>—0или1. Например, значение0снимет флаг в выбранной позиции.
Команда изменит бит и вернет его предыдущее значение. Если ключ не существует, команда создаст строку. При смещении за пределами строки она будет расширена, а промежуточные биты будут заполнены нулями. Сброс всех битов в
0не удалит ключ.
Выполнить побитовую операцию
Заголовок раздела «Выполнить побитовую операцию»Чтобы выполнить побитовую операцию и сохранить результат в отдельный ключ, используйте команду BITOP.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имена исходных ключей с помощью итеративного обхода.
Проверьте тип значений исходных ключей. Для каждого существующего ключа должно вернуться значение
string.Выберите имя целевого ключа, отличное от исходных. Проверьте, существует ли такой ключ: его значение будет заменено результатом.
Выполните нужную команду:
- AND, OR или XOR
- NOT
text BITOP <операция> <имя целевого ключа> <имя ключа 1> <имя ключа 2> [<имя ключа 3> ...]В команде
<операция>— это:ANDдля логическогоИ;ORдляИЛИ;XORдля исключающегоИЛИ.
При ненулевой длине результата команда сохранит его как строку. В ответе вернется длина результата в байтах. Если все исходные строки пусты или отсутствуют, вернется
0, а целевой ключ будет удален. ДляAND,ORиXORрезультат будет иметь длину самой длинной исходной строки, недостающие байты более коротких строк будут учтены как нулевые. Несуществующие исходные ключи будут учтены как пустые строки. При разных исходных и целевом именах исходные значения сохранятся.
Записать или изменить битовые поля
Заголовок раздела «Записать или изменить битовые поля»Чтобы записать целое число в битовое поле или изменить его на заданный шаг, используйте команду BITFIELD.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Проверьте тип значения ключа. Для существующего ключа должно вернуться значение
string.Выберите тип и смещение поля.
Выполните нужную команду:
- Записать значение
- Изменить значение
text BITFIELD <имя ключа> SET <тип поля> <смещение> <значение>Команда запишет число и вернет список с предыдущим значением поля. Задайте число, которое помещается в выбранный тип поля.
В одном вызове можно последовательно указать несколько операций
GET,SETиINCRBY. Ответы вернутся в том же порядке.OVERFLOWповлияет на следующие операцииINCRBYдо следующего указания режима.Недостающие биты будут считаться нулевыми. При записи за пределами строки она будет расширена. Для изменения полей используйте отдельный ключ, предназначенный для битовых данных.