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

Redis - Key-value store enhanced

Redis - Key-value store enhanced

Introduction to some redis data types and manipulation

Guilherme da Silva Mello

April 20, 2012
Tweet

More Decks by Guilherme da Silva Mello

Other Decks in Programming

Transcript

  1. Increment > SET online:users 0 > INCR online:users => 1

    > INCR online:users => 2 > GET online:users => 2 > DEL online:users > INCR online:users => 1
  2. Expiring - TTL > SET balance:sheet "<p>$1</p>" > EXPIRE balance:sheet

    60 > TTL balance:sheet => 59 > TTL ruby => -1
  3. Lists (Ordered) > RPUSH headlines 86 > RPUSH headlines 77

    > LPUSH headlines 458 > LRANGE headlines 0 -1 => ["458", "86", "77"] > LRANGE headlines 1 2 => ["86", "77"]
  4. Lists (cont.) > LLEN headlines => 3 > LPOP headlines

    => "458" > RPOP headlines => "77"
  5. Sets > SADD social:networks twitter > SADD social:networks facebook >

    SADD social:networks google+ > SCARD social:networks => 3
  6. Sets (cont.) > SREM social:networks twitter => 1 > SCARD

    social:networks => 2 > SISMEMBER social:networks twitter => 0 > SISMEMBER social:networks google+ => 1
  7. Sorted Sets (by score) > ZADD languages 10 Ruby >

    ZADD languages 9.5 Java > ZADD languages 4 C# > ZRANGE languages 0 -1 => ["C#", "Java", "Ruby"]
  8. Sorted Sets (cont.) > ZREVRANGE languages 0 -1 => ["Ruby",

    "Java", "C#"] > ZRANGEBYSCORE languages 5 inf => ["Java", "Ruby"] > ZREVRANGEBYSCORE languages inf 5 WITHSCORES LIMIT 0 10 => ["Ruby", "10", "Java", "9.5"]
  9. Sorted Sets (cont.) > ZSCORE languages Ruby => 10 >

    ZCOUNT languages 3 5 => 1 > ZREMRANGEBYRANK languages 0 1 => 2 > ZRANGE languages 0 -1 WITHSCORES => ["Ruby", "10"]
  10. Hashes > HMSET user:45 email [email protected] name Guilherme age 27

    > HGETALL user:45 => ["email", "[email protected]", "name", "Guilherme", "age", "27"]
  11. Hashes (cont.) > HLEN user:45 => 3 > HDEL user:45

    name > HEXISTS user:45 name => 0 > HKEYS user:45 => ["email", "age"]
  12. > RPUSH numbers 50 > RPUSH numbers 43 > LPUSH

    numbers 67 > LRANGE numbers 0 -1 => ["67", "50", "43"] > SORT numbers => ["43", "50", "67"] Sorting
  13. Sorting (cont.) > LPUSH things car > RPUSH things ball

    > RPUSH things pen > LRANGE things 0 -1 => ["car", "ball", "pen"] > SORT things ALPHA DESC => ["pen", "car", "ball"]
  14. Sort by external keys > LPUSH account:ids 2 > RPUSH

    account:ids 3 > RPUSH account:ids 1 > SET account:2:logins 50 > SET account:3:logins 23 > SET account:1:logins 12
  15. > LRANGE account:ids 0 -1 => ["2", "3", "1"] >

    SORT account:ids BY account:*: logins => ["1", "3", "2"] Sort by external keys (cont.)
  16. Retrieving external keys (cont.) > SORT account:ids BY account:*:logins GET

    account:* => ["dhh", "matz", "tenderlove"] > SORT account:ids BY account:*:logins GET account:* GET # => ["dhh", "1", "matz", "3", "tenderlove", "2"]
  17. Storing the result list > SORT account:ids BY account:*:logins GET

    account:* GET # STORE account:list > LRANGE account:list 0 -1 => ["dhh", "1", "matz", "3", "tenderlove", "2"]
  18. Sorting and retrieving with hashes > HMSET account:1:profile logins 12

    > HMSET account:2:profile logins 50 > HMSET account:3:profile logins 23 > HMSET account:1:hash name dhh > HMSET account:2:hash name tenderlove > HMSET account:3:hash name matz
  19. Sorting and retrieving with hashes (cont.) > SORT account:ids BY

    account:*:profile->logins GET account:*:hash->name => ["dhh", "matz", "tenderlove"]