Czym jest Redis?
• Baza danych typu klucz-wartość#
• Serwer struktur danych#
• Pozwala na atomiczne operacje na danych#
• Trzyma dane w pamięci operacyjnej
Slide 3
Slide 3 text
key-value store
• Klucz = unikalny identyfikator#
• Wartość = dane#
• Analogia: hash, map, tablica asocjacyjna#
• Przykład: Zbiór PESEL, książka telefoniczna
Slide 4
Slide 4 text
key-value store
key1 value1
key2 value2
key3 value3
Slide 5
Slide 5 text
String
• Podstawowa struktura (nie typ!) danych w
Redisie#
• Może zawierać dowolne dane, np. obrazy JPEG,
bitmapy, tekst, serializowane obiekty#
• Max 512 MB
Slide 6
Slide 6 text
String
name Bydgoszcz Web
SET name "Bydgoszcz Web"
nr 5
SET nr 5
Slide 7
Slide 7 text
String
name Bydgoszcz Web Development Meetup
APPEND name " Development Meetup"
GETRANGE name 10 24
Web Development
Slide 8
Slide 8 text
String
nr 6.5
INCRBYFLOAT nr 0.5
nr 6
INCR nr
Slide 9
Slide 9 text
String
bits1 1100
bits2 1010
BITOP AND result bits1 bits2
result 1000
Slide 10
Slide 10 text
Lista
• Uporządkowana kolekcja stringów (nie tablica!)#
• Możliwość dodania elementu od prawej lub
lewej strony#
• Bardzo szybki dostęp do skrajnych elementów,
wolniejszy do środkowych - O(N)
list e1 e2 e3
Slide 11
Slide 11 text
Lista
RPUSH speakers Artur
RPUSH speakers Michał
speakers Artur Michał
LPUSH speakers Bartek
speakers Bartek Artur Michał
Slide 12
Slide 12 text
Lista
LLEN speakers 3
LRANGE speakers 0 -2 Bartek Artur
RPOP speakers Michał
speakers Bartek Artur
Slide 13
Slide 13 text
Przykład: Newsfeed
• Chronologicznie#
• Tylko 3 najświeższe wiadomości
Slide 14
Slide 14 text
Przykład: Newsfeed
• Chronologicznie#
• Tylko 3 najświeższe wiadomości
newsfeed
Fotki J. Lawrence
WordPress
Coś o Tusku
Przykład: Newsfeed
LPUSH newsfeed Redis
!
LTRIM newsfeed 0 3
newsfeed
Redis
Fotki J. Lawrence
WordPress
Slide 17
Slide 17 text
Zbiór (Set)
• Nieuporządkowana kolekcja stringów#
• Szybkie dodawanie, usuwanie i sprawdzanie
istnienia elementów w zbiorze#
• Tylko unikalne wartości
set e1 e2 e3
Operacje na zbiorach
set1 a b c
set2 a x z
SUNION set1 set2 a b c x z
SINTER set1 set2 a
SDIFF set1 set2 b c
Slide 21
Slide 21 text
Operacje na zbiorach
set1 a b c
set2 a x z
SMOVE set1 set2 c
set1 a b
set2 a x z c
Slide 22
Slide 22 text
Hash
• Mapuje stringi na wartości (też stringi)#
• Dobre do reprezentacji obiektów
hash
field1 value1
field2 value2
Slide 23
Slide 23 text
Hash
HSET user name John
!
HMSET user age 30 gender male
user
name John
age 30
gender male
Slide 24
Slide 24 text
Hash
HINCRBY user age 1
HMGET user name age John 31
HGET user age 31
Slide 25
Slide 25 text
Uporządkowany zbiór
(Sorted Set)
• Połączenie zbioru z hashem#
• Każdy element ma przypisany "score"#
• Elementy są automatycznie porządkowane wg
score#
• Przydatne do budowania rankingów,
indeksowania