sql >> Databasteknik >  >> NoSQL >> Redis

Använder redis som cache för en mysql-databas

Ja, redis är bra för det. Men för att förstå kärnan finns det i princip två metoder för cachning. Beroende på om du använder ett ramverk (och vilket) eller inte, kan du ha första alternativet tillgängligt som standard eller med ett plugin-program:

  1. Cachedatabasfrågor, det vill säga - valda frågor och deras resultat kommer att hållas i redis för snabbare åtkomst under en given tid eller tills cacheminnet rensas (användbart efter uppdatering av databas). I det här fallet kan du använda inbyggd mysql-frågecache, det blir enklare än att använda ytterligare nyckel-värdelager, eller så kan du åsidosätta standarddatabasintegration med din egen klass genom att använda cache (till exempel http://pythonhosted.org /johnny-cache/).
  2. Anpassad cachelagring, det vill säga att skapa dina egna strukturer som ska hållas i cache och periodvis eller manuellt fylla på dem med data hämtade från databasen. Det är mer flexibelt och potentiellt mer kraftfullt, eftersom du kan använda inbyggda redis-funktioner som listor eller sorterade uppsättningar, vilket gör uppdateringskostnader mycket mindre. Det kräver lite mer kodning, men det ger vanligtvis bättre resultat, eftersom det är mer anpassat. Ett bra exempel är att hålla toppartiklar i form av redis-lista med id och sedan komma åt serialiserade artiklar med givet id också från redis. Du kan behålla den artikeln onormaliserad - dvs. serialiserat objekt kan innehålla användar-ID såväl som användarnamn, så att du kan hålla omkostnaderna för ytterligare frågor till ett minimum.

Det är upp till dig att bestämma vilket tillvägagångssätt du ska ta, personligen går jag nästan alltid med tillvägagångssätt nummer två. Men naturligtvis beror allt på hur mycket tid du har och vad programmet ska göra - du kan lika gärna börja med mysql-frågecache och om resultaten inte är tillräckligt bra gå över till redis och anpassad cachning.




  1. PostgreSQL vs. MongoDB

  2. Vilka är de största skillnaderna mellan Redis Pub/Sub och Redis Stream?

  3. Hur söker jag efter strängar i redis?

  4. Jämföra mongoose _id och strängar