sql >> Databáze >  >> NoSQL >> Redis

Oblast oznámení a zpráv pomocí Redis

Podle mého názoru by tato funkce měla být řešena na straně serveru, zejména pokud očekáváte, že uživatelé budou používat více typů klientů (např. prohlížeč, telefon atd.)

Každá z vašich událostí by měla mít časové razítko, abyste věděli, kdy ke které události došlo, a abyste podle toho mohli vyhledávat rozsahy v případě, že potřebujete získat například posledních 24 hodin událostí nebo události po časovém razítku X.

Když se pak uživatel, který sleduje jiného uživatele, podívá na její oznámení, můžete nastavit časové razítko jako kontrolní bod, abyste věděli, do jaké události již tento uživatel viděl, a poté zobrazit pouze události, které jsou po tomto kontrolním bodu.

Způsob, jakým jsem implementoval časové řady v REDIS v jednom z našich projektů, je pomocí Sorted Sets (http://redis.io/topics/data-types#sorted-sets). Ve vašem případě můžete uložit:

user1EventsKey -> [{ts1, eventKey1}, {ts2, eventKey2}, {ts3, eventKey3},... ]  
                                                           # This is the sorted set
eventKey1 -> [photo1, photo2, photo3]
eventKey2 -> [photo4, photo5]
...

user2Checkpoint -> tsA   #where  ts2 < tsA < ts3

Nyní víte, že až si uživatel2 příště zobrazí oznámení, zobrazíte pouze události po tsA pomocí ZRANGEBYSCORE user1EventsKey ts2 +inf získáte všechny klíče událostí a poté můžete události jednu po druhé zobrazit.

PS. Časové razítko lze uložit ve formátu UNIX.

Doufám, že to pomůže.




  1. Python redis předplatitel nemůže získat všechna data?

  2. PHP Mongo Chyba při čtení ze zásuvky

  3. Oprava „název indexu musí být řetězec“ při odstraňování více indexů v MongoDB

  4. MongoDB $add