Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Redis

Milan Popović
September 14, 2013
320

 Redis

Redis predstavlja vrlo moćno open source NoSQL rešenje. Prezentacija će vas upoznati s osnovama Redisa sa akcentom na strukture podataka koje podržava. Prikazane su biblioteke za rad sa Redisom iz PHP-a.

Milan Popović

September 14, 2013
Tweet

Transcript

  1. 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
  2. Š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
  3. Š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
  4. STRUKTURE PODATAKA Strings, Hashes, Lists, Sets, Sorted Sets img src

    - http://www.slideshare.net/dvirsky/kicking-ass- with-redis
  5. 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
  6. 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)
  7. 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
  8. KOMANDE NAD HASH-EVIMA Osnovne komande (HSET, HGET, HMSET, HMGET, HGETALL,

    HKEYS, HVALS, HDEL) Field komande (HEXISTS, HLEN) Integer & Float (HINCRBY, HINCRBYFLOAT)
  9. 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'...}
  10. 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)
  11. 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
  12. 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)
  13. 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...]
  14. KOMANDE NAD LISTAMA Osnocne operacije (LPUSH, RPUSH, LPOP, RPOP, LLEN)

    Blok komande (BRPOP, BLPOP) Pomoćne komande (LINDEX, LRANGE, LSET, LPUSH, RPUSH...)
  15. ORGANIZACIJA PODATAKA Relacione baze : Koje odgovore imam? Redis :

    Koja pitanja imam? Dobri nazivi ključeva Separatori u nazivu - najčešće ":"