Your SlideShare is downloading. ×
0
Redis
Installing
Basics
Data structures
Pseudo Multi Key Queries
References and Indexes
Round Trips and Pipelining
Transac...
iNSTALLING
• Download redis-2.8.7.tar.gz, untar
• $ make $ make test $ cd src
• $ redis-server #server accepts connections...
basics
• In-memory persistent key-value store 5 data structures
• $select 1 # many databases
• $ set users:leto '{"name": ...
Data Structures
• Strings $strlen $getrange $append
• Hashes $hset users:goku powerlevel 9000
• Lists $ lpush newusers gok...
Pseudo Multi Key Queries
• $set users:9001 '{"id": 9001, "email": "leto@dune.gov", ...}’
• $hset users:lookup:email leto@d...
References and Indexes
• $sadd friends:leto ghanima paul chani jessica
• $sadd friends_of:chani leto paul
• # having to ma...
Round Trips and Pipelining
• #Redis also supports pipelining. Normally when a
client sends a request to Redis it waits for...
Transactions
• $multi
• $hincrby groups:1percent balance -9000000000
• $hincrby groups:99percent balance 9000000000
• $exe...
Keys Anti pattern, Use
SCAN
• $ keys bug:1233:*
• #command takes a pattern and finds all the matching keys
• #Should never...
Expire, Pub-Sub
• $expire pages:about 30
• $ ttl pages:about
• $ persist pages:about
• $ setex pages:about 30 '<h1>about u...
Monitor, Sort
• $ monitor
• $ config set slowlog-log-slower-than 0
• $ slowlog $ slowlog len
• $ sort users:leto:guesses
•...
Administration
• $ config get *log* # http://download.redis.io/redis-stable/redis.conf
• $ requirepass $ auth password
• $...
A few commands
• Auth, echo, ping, quit, select
• Del, dump, exists, expire, expireat, keys, migrate, move, object, persi
...
Big O
• O(1) sismember
• O(log(N) zadd ltrim
• O(log(N)+M) zremrangebyscore
• O(N+M*log(M)) sort
• O(Nˆ2) and O(CˆN) no co...
reference
• http://github.com/karlseguin/the-little-redis-book
Upcoming SlideShare
Loading in...5
×

Redis

140

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
140
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Puneet Kumar
  • Strings $incr $incrby $setbit $getbitHashes hgetusers:gokupowerlevel $ hmsetusers:goku race saiyan age 737 $ hgetallusers:goku $ hkeysusers:goku $ hdelusers:goku age Lists $ltrimnewusers 0 49 Sets $sismemberfriends:letojessica $sinter friends:leto friends:duncan $sinterstorefriends:leto_duncanfriends:leto friends:duncanSorted Sets $zcount friends:duncan 90 100 $zrevrank friends:duncan chani
  • Transcript of "Redis"

    1. 1. Redis Installing Basics Data structures Pseudo Multi Key Queries References and Indexes Round Trips and Pipelining Transactions Keys Anti pattern, Use SCAN Expire, Pub-Sub Monitor, Sort Administration A few commands Big O Reference
    2. 2. iNSTALLING • Download redis-2.8.7.tar.gz, untar • $ make $ make test $ cd src • $ redis-server #server accepts connections on port6379 • $ redis-cli • $$ info • $ redis-benchmark
    3. 3. basics • In-memory persistent key-value store 5 data structures • $select 1 # many databases • $ set users:leto '{"name": "leto", "planet": "dune", "likes": ["spice"]}’ # Every data struct has key eg users:leto • $ get users:leto # Values are arbitrary byte arrays that Redis doesn’t care about
    4. 4. Data Structures • Strings $strlen $getrange $append • Hashes $hset users:goku powerlevel 9000 • Lists $ lpush newusers goku • Sets $sadd friends:leto ghanima paul chani jessica • Sortd Sets $ zadd friends:duncan 70 ghanima 95 paul 95 chani 75 jessica 1 vladimir
    5. 5. Pseudo Multi Key Queries • $set users:9001 '{"id": 9001, "email": "leto@dune.gov", ...}’ • $hset users:lookup:email leto@dune.gov 9001 • $get users:9001 • $id = redis.hget('users:lookup:email' , 'leto@dune.gov' ) # ruby • $user = redis.get("users:#{id}" ) # ruby
    6. 6. References and Indexes • $sadd friends:leto ghanima paul chani jessica • $sadd friends_of:chani leto paul • # having to manually deal with references in Redis is unfortunate.
    7. 7. Round Trips and Pipelining • #Redis also supports pipelining. Normally when a client sends a request to Redis it waits for the reply before sending the next request. With pipelining you can send a number of requests without waiting for their responses.
    8. 8. Transactions • $multi • $hincrby groups:1percent balance -9000000000 • $hincrby groups:99percent balance 9000000000 • $exec # Or use command discard • $ redis.watch('powerlevel' ) #ruby • $ current = redis.get('powerlevel' ) #ruby • $ redis.multi() #ruby • $ redis.set('powerlevel' , current + 1) #ruby • $ redis.exec() #ruby
    9. 9. Keys Anti pattern, Use SCAN • $ keys bug:1233:* • #command takes a pattern and finds all the matching keys • #Should never be used in production code. Linear scan through all the keys. • Better: • $hset bugs:1233 1 '{"id":1, "account": 1233, "subject": "..."}’ • $hset bugs:1233 2 '{"id":2, "account": 1233, "subject": "..."}’ • $ scan 0 match bugs:* count 20 $ hscan $sscan $zscan
    10. 10. Expire, Pub-Sub • $expire pages:about 30 • $ ttl pages:about • $ persist pages:about • $ setex pages:about 30 '<h1>about us</h1>....’ • $ subscribe warnings $unsubscribe $punsubscribe • $ publish warnings "it's over 9000!” $psubscribe warnings:*) • $blpop $brpop
    11. 11. Monitor, Sort • $ monitor • $ config set slowlog-log-slower-than 0 • $ slowlog $ slowlog len • $ sort users:leto:guesses • $ sort friends:ghanima limit 0 3 desc alpha • $ sort watch:leto by severity:* desc • $ sort watch:leto by bug:*->priority get bug:*->details • $ sort watch:leto by bug:*->priority get bug:*->details store watch_by_priority:leto
    12. 12. Administration • $ config get *log* # http://download.redis.io/redis-stable/redis.conf • $ requirepass $ auth password • $ rename-command FLUSHALL 1041285018a942a4922cbf76623b741e • $ slaveof # Replication
    13. 13. A few commands • Auth, echo, ping, quit, select • Del, dump, exists, expire, expireat, keys, migrate, move, object, persi st, pexpire, pexpireat, pttl, randomkey, rename, renamenx, restore, so rt, ttl, type, scan • Append, bitcount, bitop, bitops, decr, decrby, get, getbit, getrange, get set, inc, incrby, incrbyfloat, mget, mset, msetnx, psetex, set, setbit, set ex, setnx, setrange, strlen
    14. 14. Big O • O(1) sismember • O(log(N) zadd ltrim • O(log(N)+M) zremrangebyscore • O(N+M*log(M)) sort • O(Nˆ2) and O(CˆN) no commands
    15. 15. reference • http://github.com/karlseguin/the-little-redis-book
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×