La nostra applicazione richiede un registro delle attività delle azioni eseguite da un utente. Ad esempio:
2013/3/19
-------------
9:37 AM Chuck Norris scartati 3 robot.
9:15 AM Chuck Norris ha combattuto 3 robot.
Attualmente questo viene fatto con una gigantesca query che compila tutta l'attività di un utente in un dato giorno. La query è così lenta che quell'applicazione ti impedisce letteralmente di guardare più di un'attività di un giorno alla volta. Questi risultati potrebbero essere aggressivamente memorizzati nella cache in Redis.
La mia domanda è: qual è una buona strategia chiave di Redis per l'archiviazione di queste attività?
Devo essere in grado di eseguire una ricerca principalmente in base all'ID utente e all'intervallo di date. Ho giocato con le seguenti possibilità, ma nulla mi è saltato addosso come soluzione ottimale.
-- psuedo-code, obviously --
HMSET user:5345:activity date "3/19/2013" time "9:37 AM" action "Some action"
LPUSH user:5345:activity (json)
LPUSH user:5345:activity:2013:03:19 (json)
Tutti e tre hanno significativi compromessi. Supponiamo che un utente non abbia effettuato l'accesso per quattro mesi: in realtà potrebbero voler vedere la propria attività da quattro mesi in cima alla lista. La seconda opzione mi dà questo, ma ci sono anche trade-off in quella direzione (come non essere in grado di interrogare specificamente per data).
Qualche idea su un modo migliore per avvicinarti a questo?