2015-05-09 14 views
5

Sto tentando di creare un redis ordered set. Il problema è che l'ordine deve essere fatto sulla base di due criteri, timestamp e punteggio. Ma in redis, posso solo fornire un criterio di soring:Ordinato in rosso su più di un criterio

ZADD {key} {timestamp} {value} 

Come aggiungere punteggio in questo ordine anche plz?

Aggiornamento: Qui è l'approccio che ho preso di fondere i due diversi factoring ordinazione in un singolo valore punteggio float:

var score = Math.floor(result.created_time/(60*60*24*1000)); 
score = score + (result.matches/10); 

solo spiegare, ho dapprima convertito il timestamp al numero di giorni. E il mio valore 'partite' di solito è 0-10. Quindi, convertito in un valore decimale e aggiunto come peso frazione. Che mi dà le voci con il punteggio più alto, ordinate al giorno. Quale è esattamente ciò di cui avevo bisogno.

risposta

4

Utilizzare i decimali come punteggi nel set ordinato - costruire il punteggio con il timestamp come valore a sinistra del separatore decimale e il valore a destra.

+0

Grazie per l'indizio. Questo mi ha aiutato a creare un punteggio generico per me. Sto aggiornando la mia domanda con l'approccio che ho preso. – Rana

+0

Molto bello :) A proposito, questo trucco è sicuramente uno dei più semplici, più efficaci e spesso trascurati in Redis IMO –

Problemi correlati