Redis
Wer benutzt Redis?
Instagram
• Redis powers their main feed, activity
feed, sessions system.
• Redis runs on several Quadruple
Extra-Large Me...
Stackoverflow
• Use Redis as a caching layer for the
entire network.
• around 1.300.000 keys in Redis cache.
• peak time we...
Redis
• Schlüssel-Werte Datenstruktur
• In-Memory-Datenbank
• Transaction (optimistic Locking)
• Kein MapReduce
Philosophie
Performance
100.000 Schreiboperation
80.000 Leseoperation
pro Sekunde
Datenstrukturen
• String
• Hashes
• Lists
• Sets
• Sorted Sets
String
SET mykey "Hello"
GET mykey
Hash
HSET myhash field1 "Hello"
HGET myhash field1
Sets
SADD myset "Hello"
SADD myset "World"
SMEMBERS myset
Sorted Sets
ZADD myzset 1 "one"
ZADD myzset 1 "uno"
ZADD myzset 2 "two"
ZRANGE myzset 0 -1 WITHSCORES
Praktikum
Abfrage
Alle Buchungen, bei denen der Flug in
Düsseldorf (DUS) begonnen wird.
modelleriung
java
feingranular
Datenstruktur Schlüssel Wert
Set bookings
00QKXC
00D3N0
String exposed:00QKXC 0
Set passengers:00QKXC
Anna:Becker
Alexande...
Realisierung
Set<String> allBookingIds = jedis.smembers(BOOKINGS);
String flightId;
for(String bookingId : allBookingIds) ...
modelleriung
java
grobgranular
ticket:00P5LM:eticket:220327240100C1,220327240100C2:exposed:1:flights:DUS->CDG->CDG->DUS
Hash Name
key => flights
flights => ...
GUI-Client
Realisierung
function getBookingsStartingIn($redis, $airport)
{
echo "----------------------------------------------------...
Fazit
• Einfache und schnelle Abfragen sind mit
Redis sehr gut zu realisieren.
• Gute Dokumentation.
• Abfragesprache ist ...
Danke für die
Aufmerksamkeit
Links
• Praktikum (Wiki)
• Installation (Webseite)
• Redis Befehle (API)
• NoSQL Einführung (Buch)
• Seven Databases in Se...
Redis
Redis
Nächste SlideShare
Wird geladen in …5
×

Redis

630 Aufrufe

Veröffentlicht am

redis präsentation

Veröffentlicht in: Bildung
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
630
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
3
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Redis

  1. 1. Redis
  2. 2. Wer benutzt Redis?
  3. 3. Instagram • Redis powers their main feed, activity feed, sessions system. • Redis runs on several Quadruple Extra-Large Memory instances. • runs in a master-replica setup. Replicas constantly save to disk.
  4. 4. Stackoverflow • Use Redis as a caching layer for the entire network. • around 1.300.000 keys in Redis cache. • peak time we're getting a few hundred read/writes a second to Redis. • about 1% cpu usage • started storing much bigger things in Redis, like inboxes
  5. 5. Redis • Schlüssel-Werte Datenstruktur • In-Memory-Datenbank • Transaction (optimistic Locking) • Kein MapReduce
  6. 6. Philosophie Performance 100.000 Schreiboperation 80.000 Leseoperation pro Sekunde
  7. 7. Datenstrukturen • String • Hashes • Lists • Sets • Sorted Sets
  8. 8. String SET mykey "Hello" GET mykey
  9. 9. Hash HSET myhash field1 "Hello" HGET myhash field1
  10. 10. Sets SADD myset "Hello" SADD myset "World" SMEMBERS myset
  11. 11. Sorted Sets ZADD myzset 1 "one" ZADD myzset 1 "uno" ZADD myzset 2 "two" ZRANGE myzset 0 -1 WITHSCORES
  12. 12. Praktikum
  13. 13. Abfrage Alle Buchungen, bei denen der Flug in Düsseldorf (DUS) begonnen wird.
  14. 14. modelleriung java feingranular
  15. 15. Datenstruktur Schlüssel Wert Set bookings 00QKXC 00D3N0 String exposed:00QKXC 0 Set passengers:00QKXC Anna:Becker Alexander:Becker Hash Anna:Becker salutations => MS firstname => Anna lastname => Becker List flights:00QKXC flight:TG921 flight:TG920 Hash flight:TG921 date => 1373407200 departs => 1373460300 fromAirportAbbr => DUS Hash service:TG921 Infant Hash seats:TG921 RAUSS/ARMINMR => 08C (Non-smoking) Hash fares:00QKXC type => ADT taxes => 57.22 Set segments:00QKXC 1 2
  16. 16. Realisierung Set<String> allBookingIds = jedis.smembers(BOOKINGS); String flightId; for(String bookingId : allBookingIds) { flightId = jedis.lrange(FLIGHTS + bookingId, 0, 0).get(0); if(jedis.hget(flightId, FROM_AIRPORT_ABBR).equals(startAirport)){ allBookings.add(getBooking(bookingId)); } }
  17. 17. modelleriung java grobgranular
  18. 18. ticket:00P5LM:eticket:220327240100C1,220327240100C2:exposed:1:flights:DUS->CDG->CDG->DUS Hash Name key => flights flights => {...........} Datenstruktur
  19. 19. GUI-Client
  20. 20. Realisierung function getBookingsStartingIn($redis, $airport) { echo "----------------------------------------------------------n"; echo "Flüge die in $airport starten:n"; $tickets = $redis->query("*flights:$airport->*"); foreach ($tickets as $ticket){ echo "Flight " . $ticket["id"] . " starts in $airportn"; } echo "----------------------------------------------------------n"; }
  21. 21. Fazit • Einfache und schnelle Abfragen sind mit Redis sehr gut zu realisieren. • Gute Dokumentation. • Abfragesprache ist nicht mächtig.
  22. 22. Danke für die Aufmerksamkeit
  23. 23. Links • Praktikum (Wiki) • Installation (Webseite) • Redis Befehle (API) • NoSQL Einführung (Buch) • Seven Databases in Seven Weeks (Buch)

×