mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-18 09:09:39 +02:00
- Add uload project with apps/web structure
- Reorganize from flat to monorepo structure
- Remove PocketBase binary and local data
- Update to pnpm and @uload/web namespace
- Add picture project to monorepo
- Remove embedded git repository
- Unify all package names to @{project}/{app} schema:
- @maerchenzauber/* (was @storyteller/*)
- @manacore/* (was manacore-*, manacore)
- @manadeck/* (was web, backend, manadeck)
- @memoro/* (was memoro-web, landing, memoro)
- @picture/* (already unified)
- @uload/web
- Add convenient dev scripts for all apps:
- pnpm dev:{project}:web
- pnpm dev:{project}:landing
- pnpm dev:{project}:mobile
- pnpm dev:{project}:backend
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
180 lines
No EOL
4.2 KiB
Markdown
180 lines
No EOL
4.2 KiB
Markdown
Redis Cache für uLoad - Was bringt es
|
|
wirklich?
|
|
|
|
Das Hauptproblem aktuell
|
|
|
|
Jedes Mal wenn jemand einen deiner
|
|
Short-Links klickt, muss deine App:
|
|
1. PocketBase fragen "welche URL gehört zu
|
|
diesem Short-Code?"
|
|
2. Warten bis PocketBase in der SQLite
|
|
Datei sucht
|
|
3. Antwort zurückgeben und weiterleiten
|
|
|
|
Das dauert 50-100ms pro Klick. Bei vielen
|
|
Klicks wird PocketBase zum Flaschenhals.
|
|
|
|
Was Redis ändern würde
|
|
|
|
Redis ist wie ein ultra-schneller
|
|
Zwischenspeicher. Statt jedes Mal
|
|
PocketBase zu fragen, schaust du erst in
|
|
Redis nach. Das ist 20-50x schneller!
|
|
|
|
Die 3 größten Verbesserungen
|
|
|
|
1. Link-Redirects (90% deines Traffics)
|
|
|
|
Problem: Jeder Klick = PocketBase Query =
|
|
langsam
|
|
Lösung: Beliebte Links werden in Redis
|
|
gespeichert
|
|
|
|
Beispiel:
|
|
- Dein Link "ulo.ad/meeting" wird 100x am
|
|
Tag geklickt
|
|
- Ohne Redis: 100x PocketBase Query (100x
|
|
80ms = 8 Sekunden Serverzeit)
|
|
- Mit Redis: 1x PocketBase + 99x Redis (1x
|
|
80ms + 99x 2ms = 0.28 Sekunden)
|
|
|
|
Ergebnis: 30x schneller, 95% weniger
|
|
PocketBase Last
|
|
|
|
2. Dashboard Performance
|
|
|
|
Problem: Dein Dashboard lädt alle deine
|
|
Links aus PocketBase
|
|
Lösung: Links werden für 5 Minuten gecacht
|
|
|
|
Beispiel:
|
|
- Du hast 50 Links, checkst Dashboard 20x
|
|
am Tag
|
|
- Ohne Redis: 20x komplette Liste laden =
|
|
langsam
|
|
- Mit Redis: 1x laden, 19x aus Cache =
|
|
blitzschnell
|
|
|
|
3. Analytics & Statistiken
|
|
|
|
Problem: Click-Zahlen berechnen ist langsam
|
|
(viele Datenbankabfragen)
|
|
Lösung: Statistiken werden live berechnet
|
|
und gecacht
|
|
|
|
Beispiel:
|
|
- "Zeige Clicks der letzten 7 Tage" braucht
|
|
normalerweise komplizierte Queries
|
|
- Mit Redis: Zahlen werden kontinuierlich
|
|
aktualisiert, sofort verfügbar
|
|
|
|
Rate Limiting Verbesserung
|
|
|
|
Aktuell: Dein Rate Limiter vergisst alles
|
|
bei Server-Restart
|
|
Mit Redis: Rate Limits bleiben bestehen,
|
|
auch über Restarts hinweg
|
|
|
|
Das bedeutet: Angreifer können nicht mehr
|
|
durch Server-Restart deine Limits umgehen.
|
|
|
|
Konkrete Zahlen für dich
|
|
|
|
Traffic-Verteilung schätzen:
|
|
|
|
- 90% Redirects (Leute klicken deine Links)
|
|
- 8% Dashboard/API (Du managst deine Links)
|
|
|
|
- 2% Sonstiges (Login, Settings, etc.)
|
|
|
|
Performance ohne Redis:
|
|
|
|
- Redirect: 80ms durchschnittlich
|
|
- Dashboard laden: 300ms
|
|
- Bei 1000 Klicks/Tag: PocketBase ist
|
|
gestresst
|
|
|
|
Performance mit Redis:
|
|
|
|
- Redirect: 5ms (95% aus Cache)
|
|
- Dashboard laden: 20ms (meist aus Cache)
|
|
- Bei 10.000 Klicks/Tag: PocketBase
|
|
entspannt
|
|
|
|
Wann merkst du den Unterschied?
|
|
|
|
Sofort spürbar:
|
|
|
|
- Dashboard lädt viel schneller (besonders
|
|
mit vielen Links)
|
|
- Redirects sind blitzschnell
|
|
- Analytics laden sofort statt zu "denken"
|
|
|
|
Bei mehr Traffic:
|
|
|
|
- Server bleibt entspannt auch bei
|
|
Viral-Links
|
|
- Keine Timeouts mehr bei hoher Last
|
|
- PocketBase überlastet nicht
|
|
|
|
Skalierung:
|
|
|
|
- Ohne Redis: ~500 Redirects/Minute machbar
|
|
- Mit Redis: ~5000+ Redirects/Minute
|
|
machbar
|
|
|
|
Kosten vs. Nutzen
|
|
|
|
Option 1: Kostenlos starten
|
|
|
|
- Upstash Redis (10k Commands/Tag gratis)
|
|
- Perfekt zum Testen
|
|
- Upgrade wenn nötig
|
|
|
|
Option 2: Minimale Kosten
|
|
|
|
- €5-15/Monat für ordentlichen Redis
|
|
- Dafür 10x bessere Performance
|
|
|
|
Was du sparst:
|
|
|
|
- Weniger Server-Stress = längere
|
|
Hardware-Lebensdauer
|
|
- Bessere User Experience = mehr zufriedene
|
|
Nutzer
|
|
- Skalierung möglich ohne neuen Server
|
|
|
|
Die Realität für uLoad
|
|
|
|
Jetzt: Bei 100 Klicks gleichzeitig würde
|
|
dein Server wahrscheinlich strugglen
|
|
Mit Redis: Bei 1000 Klicks gleichzeitig
|
|
läuft alles smooth
|
|
|
|
Jetzt: Dashboard mit 100 Links braucht eine
|
|
Sekunde zum Laden
|
|
Mit Redis: Dashboard lädt in 0.1 Sekunden
|
|
|
|
Jetzt: Click-Statistiken berechnen dauert
|
|
ewig
|
|
Mit Redis: Statistiken sind immer aktuell
|
|
und sofort da
|
|
|
|
Meine ehrliche Einschätzung
|
|
|
|
Für uLoad ist Redis ein No-Brainer:
|
|
- Minimaler Aufwand (2-3 Tage Setup)
|
|
- Maximaler Nutzen (10x Performance)
|
|
- Kosten fast null (kann gratis starten)
|
|
|
|
Der größte Gewinn ist bei Redirects - das
|
|
ist dein Kernfeature und wird damit
|
|
ultra-schnell. Plus du bist ready für
|
|
Viral-Links die plötzlich 1000x geklickt
|
|
werden.
|
|
|
|
Bottom Line: Redis macht aus deinem "hobby
|
|
project" eine professionelle, skalierbare
|
|
Anwendung für praktisch null Zusatzkosten.
|
|
Das ist vermutlich das beste ROI was du
|
|
kriegen kannst! 🎯 |