Запросы типа «ключ-значение»#
В разделе описываются операции с данными типа «ключ-значение», которые можно выполнять с кешем. Они аналогичны собственным операциям с кешем DataGrid. У каждой операции есть заголовок и дополнительные данные. Подробнее о заголовках написано в подразделе «Стандартный заголовок сообщения» раздела «Обзор бинарного протокола клиента».
Доступные типы и подробные описания форматов данных находятся в разделе «Формат данных».
Коды операций#
После получения подтверждения подключения к узлу сервера клиент может начать выполнять различные операции с данными типа «ключ-значение». Клиент отправляет запрос (подробнее о структуре запросов и ответов написано в разделах ниже) с конкретным кодом операции:
Операция |
Код операции |
|---|---|
|
1000 |
|
1001 |
|
1002 |
|
1003 |
|
1004 |
|
1005 |
|
1006 |
|
1007 |
|
1008 |
|
1009 |
|
1010 |
|
1011 |
|
1012 |
|
1013 |
|
1014 |
|
1015 |
|
1016 |
|
1017 |
|
1018 |
|
1019 |
|
1020 |
Указанные выше коды операций являются частью заголовка запроса — подробнее написано в подразделе «Стандартный заголовок сообщения» раздела «Обзор бинарного протокола клиента».
Пользовательские методы, которые используются при реализации примеров фрагментов кода ниже
В некоторых примерах кода ниже используются:
метод
readDataObject(), который описан в подразделе «Объекты данных» раздела «Обзор бинарного протокола клиента»;методы, которые используют порядок байтов little-endian для чтения и записи значений, состоящих из нескольких байтов — они включены в раздел «Формат данных».
OP_CACHE_GET#
Извлекает значения из кеша по ключу. Если в кеше нет ключа, возвращается NULL.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ записи кеша, которую нужно вернуть |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Значение, которое соответствует данному ключу. Если в кеше нет ключа, значение — |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(10, OP_CACHE_GET, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Конечное значение кеша (объект данных).
int resTypeCode = readByteLittleEndian(in);
int value = readIntLittleEndian(in);
OP_CACHE_GET_ALL#
Извлекает несколько пар «ключ-значение» из кеша.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Количество ключевых полей |
|
Ключ к записи кеша. Повторяется столько раз, сколько указано в предыдущем параметре |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Количество результатов |
|
Конечные пары «ключ-значение». Ключи, которые отсутствуют в кеше, не включаются. |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(19, OP_CACHE_GET_ALL, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Количество ключей.
writeIntLittleEndian(2, out);
// Первый объект данных.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key1, out); // Ключ кеша.
// Второй объект данных.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key2, out); // Ключ кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Количество результатов.
int resCount = readIntLittleEndian(in);
for (int i = 0; i < resCount; i++) {
// Конечный объект данных.
int resKeyTypeCode = readByteLittleEndian(in); // Код типа `int`.
int resKey = readIntLittleEndian(in); // Ключ кеша.
// Конечный объект данных.
int resValTypeCode = readByteLittleEndian(in); // Код типа `int`.
int resValue = readIntLittleEndian(in); // Значение кеша.
}
OP_CACHE_PUT#
Помещает значение с заданным ключом в кеш. Если значение уже есть, оно перезапишется.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ к записи кеша |
|
Значение ключа |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(15, OP_CACHE_PUT, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(value, out); // Значение кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
OP_CACHE_PUT_ALL#
Помещает несколько пар «ключ-значение» в кеш. Если эти связи уже существуют, они перезапишутся.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Количество пар «ключ-значение» |
|
Пары «ключ-значение» типа |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(29, OP_CACHE_PUT_ALL, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Количество записей.
writeIntLittleEndian(2, out);
// Первый объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key1, out); // Ключ кеша.
// Первый объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(value1, out); // Значение кеша.
// Второй объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key2, out); // Ключ кеша.
// Второй объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(value2, out); // Значение кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
OP_CACHE_CONTAINS_KEY#
Возвращает значение, которое указывает, есть ли данный ключ в кеше.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ к записи кеша |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Если в кеше есть ключ — |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(10, OP_CACHE_CONTAINS_KEY, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Результат.
boolean res = readBooleanLittleEndian(in);
OP_CACHE_CONTAINS_KEYS#
Возвращает значение, которое указывает, все ли ключи есть в кеше.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Количество ключей |
|
Ключ, который получили из кеша. Повторяется столько раз, сколько указано в предыдущем параметре |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Если в кеше есть ключи — |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(19, OP_CACHE_CONTAINS_KEYS, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Количество.
writeIntLittleEndian(2, out);
// Первый объект данных ключа кеша.
int key1 = 11;
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key1, out); // Ключ кеша.
// Второй объект данных ключа кеша.
int key2 = 22;
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key2, out); // Ключ кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Конечное булевое значение.
boolean res = readBooleanLittleEndian(in);
OP_CACHE_GET_AND_PUT#
Помещает ключ и связанное с ним значение в кеш и возвращает предыдущее значение этого ключа. Если в кеше нет ключа, создается новая запись и возвращается значение NULL.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ, который нужно обновить |
|
Новое значение указанного ключа |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Существующее значение, которое связано с указанным ключом, или |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(15, OP_CACHE_GET_AND_PUT, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(value, out); // Значение кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Конечное значение кеша (объект данных).
int resTypeCode = readByteLittleEndian(in);
int value = readIntLittleEndian(in);
OP_CACHE_GET_AND_REPLACE#
Заменяет связанное с данным ключом значение в конкретном кеше и возвращает предыдущее значение. Если в кеше нет ключа, операция возвращает значение NULL и не меняет данные кеша.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ, значение которого нужно заменить |
|
Новое значение, которое будет связано с указанным ключом |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Предыдущее значение, которое связано с указанным ключом. Если ключа нет — |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(15, OP_CACHE_GET_AND_REPLACE, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(value, out); // Значение кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Конечное значение кеша (объект данных).
int resTypeCode = readByteLittleEndian(in);
int value = readIntLittleEndian(in);
OP_CACHE_GET_AND_REMOVE#
Удаляет определенную запись из кеша и возвращает ее значение. Если ключа не существует, вернется значение NULL.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ, который нужно удалить |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Существующее значение, которое связано с указанным ключом. Если ключа нет — |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(10, OP_CACHE_GET_AND_REMOVE, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Конечное значение кеша (объект данных).
int resTypeCode = readByte(in);
int value = readInt(in);
OP_CACHE_PUT_IF_ABSENT#
Размещает запись в кеше, если ее не существует.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ записи, которую нужно добавить |
|
Значение ключа, который нужно добавить |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Если создается новая запись — |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(15, OP_CACHE_PUT_IF_ABSENT, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(value, out); // Значение кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Конечное булевое значение.
boolean res = readBooleanLittleEndian(in);
OP_CACHE_GET_AND_PUT_IF_ABSENT#
Помещает запись в кеш, если ее еще нет. В противном случае возвращает существующее значение.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ записи, которую нужно добавить |
|
Значение записи, которую нужно добавить |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Если в кеше нет записи — |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(15, OP_CACHE_GET_AND_PUT_IF_ABSENT, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(value, out); // Значение кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Конечное значение кеша (объект данных).
int resTypeCode = readByteLittleEndian(in);
int value = readIntLittleEndian(in);
OP_CACHE_REPLACE#
Помещает в кеш значение с данным ключом, если он уже существует.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ к записи кеша |
|
Значение ключа |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Значение указывает, была ли замена |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(15, OP_CACHE_REPLACE, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(value, out); // Значение кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
boolean res = readBooleanLittleEndian(in);
OP_CACHE_REPLACE_IF_EQUALS#
Помещает в кеш значение с данным ключом, если он уже существует и значение совпадает с представленным.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ к записи кеша |
|
Значение, которое нужно сравнить с существующим в кеше для данного ключа |
|
Новое значение ключа |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Значение указывает, была ли замена |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(20, OP_CACHE_REPLACE_IF_EQUALS, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(value, out); // Значение кеша для сравнения.
// Объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(newValue, out); // Новое значение кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
boolean res = readBooleanLittleEndian(in);
OP_CACHE_CLEAR#
Очищает кеш без уведомления слушателей и cache writers.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(5, OP_CACHE_CLEAR, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
OP_CACHE_CLEAR_KEY#
Очищает ключ кеша без уведомления слушателей и cache writers.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ к записи кеша |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(10, OP_CACHE_CLEAR_KEY, 1, out);;
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
OP_CACHE_CLEAR_KEYS#
Очищает ключи кеша без уведомления слушателей и cache writers.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Количество ключей |
|
Ключи |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(19, OP_CACHE_CLEAR_KEYS, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Количество ключей.
writeIntLittleEndian(2, out);
// Первый объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key1, out); // Ключ кеша.
// Второй объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key2, out); // Ключ кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
OP_CACHE_REMOVE_KEY#
Удаляет запись с данным ключом и уведомляет слушателей и cache writers.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ к записи кеша |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Значение указывает, было ли удаление |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(10, OP_CACHE_REMOVE_KEY, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key1, out); // Ключ кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Конечное булевое значение.
boolean res = readBooleanLittleEndian(in);
OP_CACHE_REMOVE_IF_EQUALS#
Удаляет запись с данным ключом, если указанное значение совпадает с текущим. Уведомляет слушателей и cache writers.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Ключ от записи, которую нужно удалить |
|
Значение, которое нужно сравнить с текущим |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Значение указывает, было ли удаление |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(15, OP_CACHE_REMOVE_IF_EQUALS, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key, out); // Ключ кеша.
// Объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(value, out); // Значение кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Конечное булевое значение.
boolean res = readBooleanLittleEndian(in);
OP_CACHE_GET_SIZE#
Получает количество записей в кеше. Данный метод идентичен IgniteCache.size(CachePeekMode… peekModes).
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Количество peek-режимов, которые нужно запросить. Если установлено значение |
|
Указывает, какие записи нужно считать (это поле нужно обеспечить столько раз, сколько указано в предыдущем):
|
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Размер кеша |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(10, OP_CACHE_GET_SIZE, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Количество peek-режимов. '0' означает все.
writeIntLittleEndian(0, out);
// Peek-режим.
writeByteLittleEndian(0, out);
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
// Количество записей в кеше.
long cacheSize = readLongLittleEndian(in);
OP_CACHE_REMOVE_KEYS#
Удаляет записи с данными ключами и уведомляет слушателей и cache writers.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
|
Количество ключей, которые нужно удалить |
|
Ключ, который нужно удалить. Если в кеше нет ключа, поле игнорируется. Поле нужно указать для каждого удаляемого ключа |
… |
… |
|
Ключ, который нужно удалить |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(19, OP_CACHE_REMOVE_KEYS, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Количество ключей.
writeIntLittleEndian(2, out);
// Первый объект данных ключа кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key1, out); // Ключ кеша.
// Второй объект данных значения кеша.
writeByteLittleEndian(3, out); // Код типа `int`.
writeIntLittleEndian(key2, out); // Ключ кеша.
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
OP_CACHE_REMOVE_ALL#
Удаляет все записи из кеша и уведомляет слушателей и cache writers.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Используйте |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(5, OP_CACHE_REMOVE_ALL, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Длина ответа.
final int len = readIntLittleEndian(in);
// Идентификатор запроса.
long resReqId = readLongLittleEndian(in);
// Успех.
int statusCode = readIntLittleEndian(in);