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

Redis

Milan Popović
September 14, 2013
220

 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. REDIS
    /
    Milan Popović @komita1981

    View Slide

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

    View Slide

  3. 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

    View Slide

  4. Š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

    View Slide

  5. Š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

    View Slide

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

    View Slide

  7. 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

    View Slide

  8. 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)

    View Slide

  9. 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

    View Slide

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

    View Slide

  11. 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'...}

    View Slide

  12. 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)

    View Slide

  13. 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

    View Slide

  14. 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)

    View Slide

  15. 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...]

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. POSTOJANOST PODATAKA
    RDB persistance
    AOF persistance
    No persistance
    AOF+RDB persistance

    View Slide

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

    View Slide

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

    View Slide

  22. KO KORISTI REDIS?

    View Slide

  23. PHP & REDIS
    PhpRedis
    Predis
    Redisent
    Rediska
    RedisServer
    Credis

    View Slide

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

    View Slide

  25. KRAJ
    MILAN POPOVIĆ / MILANPOPOVIC.ME

    View Slide