Questa è la mia soluzione (imprudente) per mantenere Redis lista unica. (implementazione 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
Ogni volta quando si desidera spinta o inserto elemento all'elenco, verificare se LINSERT
comando sarà in grado di mettere questo articolo dopo la stessa voce (questa è l'unico modo che conosco per verificare se l'elemento è già presente nella lista redis o meno).
Se LINSERT
restituisce lo stato -1, significa che non è stato possibile trovare l'elemento nell'elenco: è tutto ok (è possibile inserirlo o inserirlo ora).
Se LINSERT
restituirà un altro valore (dimensione dell'elenco in altri casi), significa che è stato in grado di trovare già l'articolo ed è stato possibile inserire un altro elemento, subito dopo quello precedente. Significa che hai (almeno una) duplicazione del tuo articolo. Puoi cancellare uno di questi ora.
fonte
2018-01-04 16:11:02
... e se avete bisogno del vostro "elenco" in ordine - utilizzare un set ordinato :) –