Redis
NoSQLUltra-hurtig in-memory key-value store brugt til caching, sessions, real-time analytics og messaging.
Beskrivelse
Redis (Remote Dictionary Server) er en in-memory datastruktur store kendt for sin blændende hastighed - den kan håndtere millioner af operationer per sekund. I modsætning til simple key-value stores, understøtter Redis rige datatyper: strings, lists, sets, sorted sets, hashes, bitmaps, hyperloglogs og streams. Dette gør den utrolig versatil til mange use cases. Redis holder alle data i RAM for maximum speed, men kan persistere til disk via snapshots eller append-only files. Den bruges primært som cache lag foran langsommere databaser, session store for web applikationer, message broker med pub/sub, og real-time leaderboards. Redis understøtter også Lua scripting for atomic operations, transactions, og replication for high availability. Med Redis Cluster kan man scale horizontalt. Store sites som Twitter, GitHub, Stack Overflow og Snapchat bruger Redis intensivt.
Features
- •In-memory storage for ekstrem hastighed
- •Rige datastrukturer (lists, sets, hashes, etc)
- •Pub/Sub messaging
- •Lua scripting support
- •Transactions og atomic operations
- •Persistence options (RDB, AOF)
- •Replication og Redis Sentinel
- •Horizontal scaling med Redis Cluster
Query Eksempel
// String operations
SET user:1000:name "Maria Nielsen"
GET user:1000:name
INCR page:views
EXPIRE session:abc123 3600 // Expire after 1 hour
// Hash operations
HSET user:1000 name "Maria Nielsen" email "maria@email.dk" age 28
HGET user:1000 name
HGETALL user:1000
// List operations (queue)
LPUSH queue:tasks "send_email"
LPUSH queue:tasks "process_payment"
RPOP queue:tasks // FIFO queue
// Set operations
SADD user:1000:interests "reading" "hiking" "photography"
SISMEMBER user:1000:interests "reading" // Returns 1
// Sorted Set (leaderboard)
ZADD leaderboard 1500 "player1"
ZADD leaderboard 2300 "player2"
ZADD leaderboard 1800 "player3"
ZREVRANGE leaderboard 0 9 WITHSCORES // Top 10
// Pub/Sub
SUBSCRIBE notifications
PUBLISH notifications "New order received"
// Transactions
MULTI
INCR account:1000:balance
DECR account:2000:balance
EXECAnvendelsesområder
- •Database caching for performance
- •Session storage i web applikationer
- •Real-time leaderboards og counters
- •Pub/Sub messaging systemer
- •Rate limiting og API throttling
Fordele
- ✓Ekstremt hurtig (sub-millisecond latency)
- ✓Simple men kraftfuld API
- ✓Understøtter komplekse datastrukturer
- ✓Excellent til real-time use cases
- ✓Open-source med stor community
Ulemper
- ✗Begrænset af RAM størrelse
- ✗Ikke ideel til komplekse queries
- ✗Persistence er langsommere end in-memory
- ✗Ingen query language (kun key-based access)
- ✗Single-threaded (men meget effektiv)
Bedst til
- →Caching for at accelerere databases
- →Session management
- →Real-time analytics
- →Gaming leaderboards
- →Message queues og job processing
Ikke anbefalet til
- ⚠Primary datastore for kritisk data
- ⚠Datasets større end tilgængelig RAM
- ⚠Komplekse relational queries
- ⚠Long-term storage uden persistence
- ⚠Ad-hoc queries på data