Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Redis - Key-value store enhanced
Search
Guilherme da Silva Mello
April 20, 2012
Programming
1
150
Redis - Key-value store enhanced
Introduction to some redis data types and manipulation
Guilherme da Silva Mello
April 20, 2012
Tweet
Share
More Decks by Guilherme da Silva Mello
See All by Guilherme da Silva Mello
Desenvolvimento Ágil de Aplicações WEB
guimello
0
54
Other Decks in Programming
See All in Programming
複雑なフォームに立ち向かう Next.js の技術選定
macchiitaka
2
180
今から始めるClaude Code入門〜AIコーディングエージェントの歴史と導入〜
nokomoro3
0
210
Android 16 × Jetpack Composeで縦書きテキストエディタを作ろう / Vertical Text Editor with Compose on Android 16
cc4966
2
260
プロポーザル駆動学習 / Proposal-Driven Learning
mackey0225
2
1.3k
Azure SRE Agentで運用は楽になるのか?
kkamegawa
0
2.4k
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
560
アルテニア コンサル/ITエンジニア向け 採用ピッチ資料
altenir
0
110
🔨 小さなビルドシステムを作る
momeemt
4
690
概念モデル→論理モデルで気をつけていること
sunnyone
3
290
Navigation 2 を 3 に移行する(予定)ためにやったこと
yokomii
0
330
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
10
4.3k
スケールする組織の実現に向けた インナーソース育成術 - ISGT2025
teamlab
PRO
1
130
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Code Reviewing Like a Champion
maltzj
525
40k
How STYLIGHT went responsive
nonsquared
100
5.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Bash Introduction
62gerente
615
210k
A Tale of Four Properties
chriscoyier
160
23k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Documentation Writing (for coders)
carmenintech
74
5k
Transcript
Redis key-value store enhanced
Storing and retrieving > SET what:is:love? "baby ..." > GET
what:is:love? => "baby ..."
Deleting keys > DEL article:1 => 1 | 0
SET-if-not-exists > SETNX video:63:title "The Doors" => 1 | 0
Increment > SET online:users 0 > INCR online:users => 1
> INCR online:users => 2 > GET online:users => 2 > DEL online:users > INCR online:users => 1
Expiring - TTL > SET balance:sheet "<p>$1</p>" > EXPIRE balance:sheet
60 > TTL balance:sheet => 59 > TTL ruby => -1
Lists (Ordered) > RPUSH headlines 86 > RPUSH headlines 77
> LPUSH headlines 458 > LRANGE headlines 0 -1 => ["458", "86", "77"] > LRANGE headlines 1 2 => ["86", "77"]
Lists (cont.) > LLEN headlines => 3 > LPOP headlines
=> "458" > RPOP headlines => "77"
Sets > SADD social:networks twitter > SADD social:networks facebook >
SADD social:networks google+ > SCARD social:networks => 3
Sets (cont.) > SREM social:networks twitter => 1 > SCARD
social:networks => 2 > SISMEMBER social:networks twitter => 0 > SISMEMBER social:networks google+ => 1
Sets (cont.) > SMEMBERS social-networks => ["google+", "facebook"] > SRANDMEMBER
social-networks => ["facebook"]
Sets (cont.) > SADD cool-sites facebook > SINTER social-networks cool-sites
=> ["facebook"]
Sorted Sets (by score) > ZADD languages 10 Ruby >
ZADD languages 9.5 Java > ZADD languages 4 C# > ZRANGE languages 0 -1 => ["C#", "Java", "Ruby"]
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"]
Sorted Sets (cont.) > ZSCORE languages Ruby => 10 >
ZCOUNT languages 3 5 => 1 > ZREMRANGEBYRANK languages 0 1 => 2 > ZRANGE languages 0 -1 WITHSCORES => ["Ruby", "10"]
Hashes > HMSET user:45 email
[email protected]
name Guilherme age 27
> HGETALL user:45 => ["email", "
[email protected]
", "name", "Guilherme", "age", "27"]
Hashes (cont.) > HSET user:45 name Mello > HGET user:45
name => Mello
Hashes (cont.) > HLEN user:45 => 3 > HDEL user:45
name > HEXISTS user:45 name => 0 > HKEYS user:45 => ["email", "age"]
> RPUSH numbers 50 > RPUSH numbers 43 > LPUSH
numbers 67 > LRANGE numbers 0 -1 => ["67", "50", "43"] > SORT numbers => ["43", "50", "67"] Sorting
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"]
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
> LRANGE account:ids 0 -1 => ["2", "3", "1"] >
SORT account:ids BY account:*: logins => ["1", "3", "2"] Sort by external keys (cont.)
Retrieving external keys > SET account:1 "dhh" > SET account:2
"tenderlove" > SET account:3 "matz"
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"]
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"]
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
Sorting and retrieving with hashes (cont.) > SORT account:ids BY
account:*:profile->logins GET account:*:hash->name => ["dhh", "matz", "tenderlove"]
Check out more on http://redis.io or http://lmgtfy.com/?q=redis Thanks!