At køre redis på en dyno er en interessant idé. Du skal sandsynligvis oprette en redis buildpack, så dine dynos kan downloade og køre redis. Da "redis ikke har andre afhængigheder end en fungerende GCC-kompiler og libc" burde dette være teknisk muligt.
Men her er nogle problemer, du kan støde på:
-
Heroku dynos har ikke en statisk IP-adresse
"dynos har ikke statiske IP-adresser .. du kan aldrig få adgang til en dyno direkte via IP"
Selvom du konfigurerer og kører Redis på en dyno, er jeg ikke bekendt med en måde at lokalisere den dyno-instans og sende den redis-anmodninger. Det betyder, at din Redis-server sandsynligvis skal køre på den samme dyno som din webserver/hovedapplikation.
Dette også betyder, at hvis du forsøger at skalere din app ved at oprette flere webdynoer, vil du også oprette flere lokale redis-forekomster. Data vil ikke blive delt mellem dem. Dette forekommer mig ikke som et særligt skalerbart design, men hvis din app er lille nok til kun at kræve én webdyno, kan den muligvis fungere.
-
Heroku dynos har et flygtigt filsystem
"ingen filer, der er skrevet, er synlige for processer i nogen anden dyno, og alle filer, der er skrevet, vil blive kasseret i det øjeblik, dynoen stoppes eller genstartes"
Som standard skriver Redis sin RDB-fil og AOF-log til disken. Du skal jævnligt sikkerhedskopiere disse et sted, så du kan hente og gendanne efter din dyno genstarter. Se dokumentationen om Redis persistens.
-
Heroku dynos genstartes ofte
"Dynos cykles mindst én gang om dagen, eller når dynomanifolden registrerer en fejl i den underliggende hardware"
Du skal være i stand til at starte din redis-server hver gang dynoen starter og gendanne dataene.
-
Heroku dynos har 512 MB RAM
"Hver dyno er tildelt 512 MB hukommelse til at fungere inden for"
Hvis din Redis-server kører på samme dyno som din webserver, skal du trække den nødvendige RAM til din hovedapp. Hvor meget Redis-hukommelse har du brug for?
Her er nogle spørgsmål, der forsøger at estimere og spore Redis-hukommelsesbrug:
- Redis:Databasestørrelse til hukommelsesforhold?
- Profilering af Redis-hukommelsesbrug
--
Samlet set: Jeg foreslår, at du læser op på 12 Factor Apps for at forstå lidt mere om herokus påtænkte applikationsmodel.
Den korte version er, at dynos er beregnet til at være uafhængige arbejdere, der nemt kan oprettes og kasseres for at imødekomme efterspørgslen, og at dynos får adgang til forskellige ressourcer til at læse eller skrive data og betjene din app. En redis-instans er et eksempel på en ressource. Som du kan se af ovenstående elementer, får du ved at bruge en redis-tilføjelse noget, der med garanti er statisk, stabilt og tilgængeligt.
Læsemateriale:
- http://www.12factor.net/ - specifikt processer og tjenester
- Heroku-procesmodellen
- Heroku Blog - Procesmodellen