let's talk about sets

27
Let’s talk about Sets ryan lemmer

Upload: ryanlemmer

Post on 14-Dec-2014

466 views

Category:

Documents


1 download

DESCRIPTION

RUBYFUZA 2011 Talk

TRANSCRIPT

Let’s talk about Sets

ryan lemmer

* period: start => stop* type: download, upload, visit

* email* password

CREATE

KEY VALUE“User:1” {:email => “...”, :password => “...”}

CREATE

KEY VALUE“UserID” 1

“User:1” {:email => “...”, :password => “...”}

CREATE

KEY VALUE“UserID” 1

“User:1” {:email => “...”, :password => “...”}

“UsageID” 1

“Usage:1” {:start => ?, :stop => ?, :type => “download”, :user_id => 1}

CREATE

GET ITEM

KEY VALUE“UserID” 1

“User:1” {:email => “...”, :password => “...”}

“UsageID” 1

“Usage:1” {:start => ?, :stop => ?, :type => “download”, :user_id => 1}

GET ITEM

GET ITEM

GET ITEM

KEY VALUE“UserID” 2

“User:1” {:email => “...”, :password => “...”}

“User:2” {:email => “...”, :password => “...”}

“User: [email protected]” 1

“User: [email protected]” 2

GET ITEMS

“UserID”

“User:1”

“User:5”

“User:4”

“User:2”

“User:3”

“Usage:8”

“Usage:7”

“Usage:6”

“Usage:5”“Usage:4”

“Usage:3”

“Usage:2”

“Usage:1”

KEY VALUE“UserID” 2

“User:1” {:email => “...”, :password => “...”}

“User:2” {:email => “...”, :password => “...”}

“User:3” {:email => “...”, :password => “...”}

“Users” <1,2,3>

GET ITEMS

KEY VALUE“UserID” 2

“User:1” {:email => “...”, :password => “...”}

“User:2” {:email => “...”, :password => “...”}

“User:3” {:email => “...”, :password => “...”}

“Users” <1,2,3>

GET ITEMS

SORTED ITEMS

“User:1:usages” “3” “2” “4” “1” “5”1262325600 1262348100 12625128601262369700 1262416500 score

value

SORTED ITEMS

“User:1:usages” “3” “2” “4” “1” “5”1262325600 1262348100 12625128601262369700 1262416500 score

value

SORTED ITEMS

0 1 2 3 4 index

“User:1:usages” “3” “2” “4” “1” “5”1262325600 1262348100 12625128601262369700 1262416500 score

value

SORTED ITEMS

SORTED ITEMS

KEY VALUE“UserID” 2

“User:1” {:email => “...”, :password => “...”}

“User:2” {:email => “...”, :password => “...”}

“User:3” {:email => “...”, :password => “...”}

“Users” <1,2,3>

“User:1:usages” <(s1,1), (s2,2), (s3,3), (s4,4), (s5,5)>

“User:2:usages” <(s6,6), (s7,7), (s8,8)>

FILTER ITEMS

Downloads

Uploads

“1” “5”“7” “8”

“2” “4”“6”

Visits“3”

FILTER ITEMS

Downloads

Uploads

“1” “5”“7” “8”

“2” “4”“6”

Visits“3”

FILTER ITEMS

User:1:usages

“1”

“2”

“3”

“4” “5”

FILTER ITEMS

Downloads

Uploads

“1” “5”“7” “8”

“2” “4”“6”

Visits“3”

Usage:downloads“7”“8”

User:1:usages“1”

“2”

“3”

“4” “5”

INTERSECTION

FILTER ITEMS

Usage:downloads

Usage:uploads

“1” “5”“7” “8”

“2” “4”“6”

FILTER ITEMS

User:1:usages

“1”

“2”

“3”

“4” “5”

Usage:downloads

Usage:uploads

“1” “5”“7” “8”

“2” “4”“6”

FILTER ITEMS

Checkout...

ryan lemmer

github.com/ezmobius/redis-rbohm.keyvalue.org