sql >> Databasteknik >  >> NoSQL >> Redis

Hur man ställer in utgångsdatum till flera nycklar i Redis

Ofta glömmer utvecklare att ställa in ett utgångsdatum på nycklar, och redis börjar ta slut på minne. Även om du kan ställa in ett utgångsdatum för nyskapade nycklar, behöver du fortfarande ett sätt att ställa in ett utgångsdatum för nycklar som redan finns i minnet.


Detta kommando kommer att ställa in utgångsdatum för nycklar som matchar användare:*


Hur fungerar skriptet?

  1. Först använder vi redis-cli --scan --pattern <pattern> för att få en lista med nycklar, en nyckel per rad.
  2. Vi kör sedan ett awk-skript för varje nyckel. Det här awk-skriptet är lite komplicerat, så vi kommer att bryta ner det
  3. Awk-skriptet har en kommandomall expire __key__ 1000 . Detta är kommandot som körs för alla nycklar.
  4. För varje matchande nyckel ersätter kommandot awk __key__ med den faktiska nyckeln
  5. Närnäst konverterar vi strängkommandot till redis-protokollformat. Det här är råformatet som redis förstår.
  6. Slutligen skickar vi råkommandona till redis-cli med hjälp av –pipe-flaggan. Detta är det mest effektiva sättet att skicka bulkkommandon till redis.

Anpassa detta skript

  1. Du kan anpassa cmd_template för att köra vilket som helst redis-kommando med en enda tangent mot flera nycklar som matchar ett mönster.
  2. Redis-skanning tillåter endast glob-stilmönster, regex stöds inte. Så users:* kommer att matcha users:123 samt users:123:favourites . Du kan lägga in en grep i pipelinen efter första redis-cli och före awk-skriptet.
  3. Om din redis-server inte finns på localhost måste du ange värden, porten och lösenordet två gånger i kommandot, i princip när du anropar redis-cli.

Se även

  • Byt namn på fält i en hash
  • Byt namn på flera nycklar med Scan
  • Ta bort nycklar som matchar ett mönster
  • RDBTools GUI för Redis låter dig förhandsgranska dina bulkåtgärder och tillhandahåller ett kraftfullt GUI för att hantera data i Redis. Det är en gratis nedladdning!

  1. MongoDB Seattle 2014

  2. Skapa ett flerspråkigt textindex i MongoDB

  3. Hur sammanställer man summan i MongoDB för att få ett totalt antal?

  4. Hur kan jag få värdet från Redis och lägga det i en variabel i NGiNX?