У меня есть большой отсортированный набор Redis. Нам нужно ежедневно переиндексировать данные в наборе, пока клиенты активно запрашивают данные из набора. Мой план состоит в том, чтобы просто создать второй набор, используя другой ключ, а затем заменить существующий ключ новым:
- Построить новый «индексированный» отсортированный набор
- ПЕРЕИМЕНОВАТЬ «индексированный» набор в «живой», чтобы заменить существующий «живой» набор.
Глядя на документацию RENAME, говорится:
Если новый ключ уже существует, он перезаписывается, когда это происходит, RENAME выполняет неявную операцию DEL, поэтому, если удаленный ключ содержит очень большое значение, это может вызвать большую задержку, даже если RENAME обычно является операцией с постоянным временем.
Тогда мне интересно, не лучше ли переименовать «живой» отсортированный набор (например, в «мертвый»), а затем переименовать новый «индексированный» отсортированный набор в «живой» и передать эти запросы. И только потом отдельной командой DEL удалить «мертвый» набор:
- Построить новый «индексированный» отсортированный набор
- конвейер: ПЕРЕИМЕНОВАТЬ существующий «живой» набор на «мертвый»
- конвейер: ПЕРЕИМЕНОВАТЬ новый «индексированный», установленный на «живой»
- DEL "мертвый" набор
идеи?