sql >> Databasteknik >  >> NoSQL >> Redis

Hur skulle Redis få veta om det måste returnera cachad data eller färsk data från DB

Redis har ingen aning om huruvida data i DB har uppdaterats.

Normalt använder vi Redis för att cachelagra data enligt följande:

  1. Kunden kontrollerar om uppgifterna, t.ex. nyckel-värdepar, finns i Redis.
  2. Om nyckeln finns får klienten motsvarande värde från Redis.
  3. Annars får den data från DB och ställer in den på Redis. Klienten ställer också in ett utgångsdatum, säg 5 minuter, för nyckel-värdeparet i Redis.
  4. Då kommer alla efterföljande förfrågningar om samma nyckel att betjänas av Redis. Även om data i Redis kan vara inaktuella.
  5. Men efter 5 minuter, kommer denna nyckel att tas bort från Redis automatiskt.
  6. Gå till steg 1.

Så för att hålla din data i Redis uppdaterad kan du ställa in en kort utgångstid. Din DB måste dock betjäna många förfrågningar.

Om du till stor del vill minska förfrågningar till DB kan du ställa in en lång utgångstid. Så att Redis för det mesta kan betjäna förfrågningarna med eventuellt inaktuella data.

Du bör noga överväga avvägningen mellan prestanda och inaktuella data.



  1. HBase Prestandatestning med YCSB

  2. MongoDB-aggregationsprojektsträng till ObjectId

  3. finns det något sätt att få klientens IP i redis?

  4. MongoDB estimatedDocumentCount()