Списки допускают дубликаты, но не предоставляют простой способ проверки существования, и, как советовал @Fritzy, вам необходимо:
- Выполните несколько операций (удалите, затем добавьте снова, если найдено во время удаления) для простых проверок = Стоимость во времени
- Ведение отдельного набора = Стоимость в памяти
Я удивлен, что никто не советовал вам использовать Хеш-таблицу или Sorted Set , которые сочетают в себе преимущества , допускающие двойственность (сохраняя количество элементов в качестве значения - Хеш-таблица или счет - Сортированный набор ) и индексирование элементов по типу хеш-таблицы / набора.
Хеш-таблица
Чтобы проверить наличие ключа, используйте HEXISTS
для определенного поля, которое возвращает 0
, если указанный элемент не существует.
Вы также можете использовать команду HGET
. Возвращает ответ nil
, если указанный член не существует.
Чтобы добавить новый элемент, просто используйте HINCRBY
, который либо обновит значение (т. Е. Количество элементов с именем элемента), либо создаст новый элемент, если он не существует.
Сортированный набор
Чтобы проверить наличие ключа, используйте одну из трех следующих команд:
Они возвращают nil
ответ, если указанный член не существует.
Чтобы добавить нового участника, просто используйте ZINCRBY
, который либо обновит счет (т.е. количество элементов с именем участника), либо создаст нового участника, если он не существует.
Суммируя: Сортированные наборы или Хеш-таблицы позволяют выполнять все операции с вашими требованиями с помощью одной команды .