Dieser Satz sortiert ist meine (rücksichtslose) Lösung zu halten Redis Liste einzigartig. (Implementierung in Ruby)
def push_item_to_the_list(LIST_KEY, item)
insert_status = Redis.linsert(LIST_KEY, 'before', item, item)
if insert_status == -1
Redis.lpush(LIST_KEY, item)
else
Redis.lrem(LIST_KEY, 1, item)
end
end
Jedes Mal, wenn Sie Push oder Einsatz Artikel Ihre Liste mögen, prüfen Sie, ob LINSERT
Befehl Lage sein wird, dieses Produkt nur nach dem gleichen Punkt zu setzen (dies ist der einzige Weg, ich weiß zu überprüfen, ob der Artikel bereits in der Liste ist oder nicht).
Wenn LINSERT
den Status -1 zurückgibt, bedeutet das, dass es kein Element in Ihrer Liste gefunden hat - alles ist in Ordnung (Sie können es jetzt drücken oder einfügen).
Wenn LINSERT
einen anderen Wert zurückgibt (Größe der Liste in einem anderen Fall) - bedeutet das, dass es bereits einen Artikel gefunden hat und es einen anderen Artikel einfügen konnte, gleich nach dem vorherigen. Es bedeutet, dass Sie (mindestens) eine Duplizierung Ihres Artikels haben. Sie können jetzt einen von ihnen löschen.
... und wenn Sie Ihre "Liste" in der Reihenfolge benötigen - verwenden Sie eine Sorted Set :) –