Spec-Zone.ru › Redis

XDEL

XDEL
Синтаксис
XDEL key id [id ...]
Доступно с версии:
5.0.0
Сложность по времени:
O(1) для каждого удаляемого элемента в потоке, независимо от размера потока.
Категории ACL:
@write, @stream, @fast,

Удаляет указанные записи из потока и возвращает количество удалённых записей. Это число может быть меньше, чем количество идентификаторов, переданных команде, в случае, если некоторые из указанных идентификаторов отсутствуют в потоке.

Обычно вы можете рассматривать поток Redis как структуру данных с односторонней записью, однако потоки Redis представлены в памяти, поэтому мы также можем удалять записи. Это может быть полезно, например, для соблюдения определённых правил конфиденциальности.

Понимание низкоуровневых деталей удаления записей

Потоки Redis представлены таким образом, чтобы они были эффективными с точки зрения памяти: используется дерево радикса для индексации макроузлов, которые упаковывают линейно десятки записей потока. Обычно при удалении записи из потока запись не действительно удаляется, а просто помечается как удалённая.

В конечном итоге, если все записи в макроузле помечены как удалённые, весь узел уничтожается, и освобождается память. Это означает, что если вы удалите большое количество записей из потока, например, более 50% записей, добавленных в поток, использование памяти на запись может увеличиться, так как поток фрагментируется. Однако производительность потока останется неизменной.

В будущих версиях Redis возможно будет вызывать сборку мусора узлов в случае, если узел макро достигает определённого количества удалённых записей. В настоящее время с ожидаемым нами использованием этой структуры данных, добавление такой сложности не является целесообразным.

Возврат

Целочисленный ответ: количество фактически удалённых записей.

Примеры

> XADD mystream * a 1
1538561698944-0
> XADD mystream * b 2
1538561700640-0
> XADD mystream * c 3
1538561701744-0
> XDEL mystream 1538561700640-0
(integer) 1
127.0.0.1:6379> XRANGE mystream - +
1) 1) 1538561698944-0
   2) 1) "a"
      2) "1"
2) 1) 1538561701744-0
   2) 1) "c"
      2) "3"

© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/xdel/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API