Slide 1

Slide 1 text

REDIS / Milan Popović @komita1981

Slide 2

Slide 2 text

AGENDA Redis - opšti pregled Strukture podataka Postojanost podataka Transakcije Organizacija podataka Redis & PHP

Slide 3

Slide 3 text

KRATKA ISTORIJA PROJEKTA REDIS Projekat započeo Salvatore Sanfilipo - 2009. godine Napisan u jeziku ANSI C Radi na većini POSIX sistema (Linux, OS X, Solaris...) Open source - - 98 kontributora Od 2010. godine sponzoriše ga VMWare Projektu se priključio @antirez https://github.com/antirez/redis Pieter Noordhuis

Slide 4

Slide 4 text

ŠTA JE REDIS REmote DIctionary Server Napredna key value baza Server struktura podataka - string, set, sorted set, list i hash Podaci se nalaze u memoriji Ekstremno brz - 100K operacija u sekundi Nema indeksa i nema šeme Radi sa komandama Atomske operacije Predvidive performanse Radi na 6379 text based tcp protokolu

Slide 5

Slide 5 text

ŠTA JE REDIS Jednostavna instalacija $ s u d o a p t - g e t i n s t a l l r e d i s - s e r v e r Podesiva postojanost podataka Master-slave replication Particioniranje Lua scripting - stored procedures Redis-CLI i Redis Sentinel Dostupni klijenti za gotovo sve programske jezike

Slide 6

Slide 6 text

STRUKTURE PODATAKA Strings, Hashes, Lists, Sets, Sorted Sets img src - http://www.slideshare.net/dvirsky/kicking-ass- with-redis

Slide 7

Slide 7 text

STRINGS Predstavlja osnovnu strukturu Može da sučuva podatke veličine do 512 MB Primeri stringova: post_counter - 9888 current_mode - "Maximum" bitcode - 0101 average_points - 15.5

Slide 8

Slide 8 text

KOMANDE NAD STRINGOVIMA Osnovne komande (SET, GET, MSET, MGET, GETSET) Integer&Float (INCR, INCRBY, DECR, DECRBY, INCRBYFLOAT) String (APPEND, SETRANGE, GETRANGE, STRLEN) Expiring (SETEX, PSETEX) Locking (SETNX, PSETNX) Bit (BITCOUNT, BITOP, SETBIT)

Slide 9

Slide 9 text

HASHES Predstavljaju niz field->value parova Pandam asocijativnim nizovima u PHP-u Zauzimaju malo prostora Do 2 32 -1 field->value parova Primer hash-a: user:2 username komita1981 first_name Milan second_name Popović age 32

Slide 10

Slide 10 text

KOMANDE NAD HASH-EVIMA Osnovne komande (HSET, HGET, HMSET, HMGET, HGETALL, HKEYS, HVALS, HDEL) Field komande (HEXISTS, HLEN) Integer & Float (HINCRBY, HINCRBYFLOAT)

Slide 11

Slide 11 text

SETS Predstavlja neuređenu strukturu jedinstvenih elemenata Pandam numeričkim nizovima u PHP-u Do 232-1 elemenata Primer seta: even_numbers {2, 4, 6, 8, 10...} group_members {'John', 'Mike', 'Bob', 'Alice'...}

Slide 12

Slide 12 text

KOMANDE NAD SETOVIMA Osnovne komande (SADD, SREM, SMEMBERS, SCARD, SISMEMBER) Pomoćne komande (SRANDMEMBER, SPOP, SMOVE) Komande skupovnih operacija (SINTER, SUNION, SDIFF, SINTERSTORE, SUNIONSTORE, SDIFFSTORE)

Slide 13

Slide 13 text

SORTED SET Uređena struktura jedinstvenih elemenata Do 232-1 elemenata Primer sorted seta: score_board: Partizan 65 Rad 50 Vojvodina 55 Radnički 45

Slide 14

Slide 14 text

KOMANDE NAD SORTIRANIM SETOVIMA Osnovne komande (ZADD, ZREM, ZCARD, ZSCORE, ZCOUNT, ZINCRBY) Komande skupovnih operacija (ZINTERSTORE, ZUNIONSTORE) Komande ranga (ZRANK, ZREVRANK) Komande opsega (ZRANGE, ZREVRANGE, ZREMRANGEBYRANK) Komande bodova (ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYSCORE)

Slide 15

Slide 15 text

LISTS Predstavlja niz stringova Elementi se ubacuju na početak ili kraj (glavu i rep) Do 232-1 elemenata Primer liste: last_registered_users: [memre, remem, streamer, poper...] last_logins: [memre, remem, memre, streamer, poper, remem...]

Slide 16

Slide 16 text

KOMANDE NAD LISTAMA Osnocne operacije (LPUSH, RPUSH, LPOP, RPOP, LLEN) Blok komande (BRPOP, BLPOP) Pomoćne komande (LINDEX, LRANGE, LSET, LPUSH, RPUSH...)

Slide 17

Slide 17 text

ZAJEDNIČKE KOMANDE DEL, RENAME, TYPE, SORT EXPIRE, PEXPIRE, EXPIREAT, PEXPIREAT, PERSIST, TTL, PTTL KEYS, MONITOR, FLUSHDB

Slide 18

Slide 18 text

PUB/SUB Publish/Subscribe messaging paradigm PUBLISH, SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE

Slide 19

Slide 19 text

POSTOJANOST PODATAKA RDB persistance AOF persistance No persistance AOF+RDB persistance

Slide 20

Slide 20 text

TRANSAKCIJE Redis transakcije != RDBMS transakcije Atomske operacije MULTI - EXEC WATCH - UNWATCH - DISCARD

Slide 21

Slide 21 text

ORGANIZACIJA PODATAKA Relacione baze : Koje odgovore imam? Redis : Koja pitanja imam? Dobri nazivi ključeva Separatori u nazivu - najčešće ":"

Slide 22

Slide 22 text

KO KORISTI REDIS?

Slide 23

Slide 23 text

PHP & REDIS PhpRedis Predis Redisent Rediska RedisServer Credis

Slide 24

Slide 24 text

HOĆETE DA NAUČITE REDIS http://try.redis.io/ The Little Redis Book Redis in action

Slide 25

Slide 25 text

KRAJ MILAN POPOVIĆ / MILANPOPOVIC.ME