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/