Upload
afterdesign
View
54
Download
2
Embed Size (px)
DESCRIPTION
serwer struktur danych w praktyceponiedziałek, 11 lipca 2011CZEŚĆ!jestem filip.poniedziałek, 11 lipca 2011PLANco to jest redis? typy danych zabójcze cechy redis a memcached redis w praktyce tips & tricksponiedziałek, 11 lipca 2011NOSQLponiedziałek, 11 lipca 2011REDIS TO...zaawansowany system klucz-wartośćponiedziałek, 11 lipca 2011REDIS TO...serwer struktur danychponiedziałek, 11 lipca 2011@ANTIREZ@pnoordhuisponiedziałek, 11 lipca 2011poniedziałek, 11 lipc
Citation preview
serwer struktur danych w praktyce
poniedziałek, 11 lipca 2011
CZEŚĆ!jestem filip.
poniedziałek, 11 lipca 2011
PLAN
co to jest redis?
typy danych
zabójcze cechy
redis a memcached
redis w praktyce
tips & tricks
poniedziałek, 11 lipca 2011
NOSQL
poniedziałek, 11 lipca 2011
REDIS TO...
zaawansowany system klucz-wartość
poniedziałek, 11 lipca 2011
REDIS TO...
serwer struktur danych
poniedziałek, 11 lipca 2011
@ANTIREZ@pnoordhuis
poniedziałek, 11 lipca 2011
poniedziałek, 11 lipca 2011
YYY...
poniedziałek, 11 lipca 2011
poniedziałek, 11 lipca 2011
STRUKTURY DANYCH
poniedziałek, 11 lipca 2011
STRING
poniedziałek, 11 lipca 2011
STRING
redis> SET my:key "value"
redis> GET my:key"value"
poniedziałek, 11 lipca 2011
STRING
redis> SET my:incr "10"
redis> INCR my:incr
redis> GET my:incr"11"
poniedziałek, 11 lipca 2011
STRING
redis> SET hello:world "Web"
redis> APPEND hello:world "Clusters"
redis> GET hello:world"WebClusters"
redis> GETRANGE hello:world 0 2"Web"
poniedziałek, 11 lipca 2011
LIST
poniedziałek, 11 lipca 2011
LIST
redis> LPUSH list aredis> LPUSH list bredis> RPUSH list c
redis> LRANGE list 0 21) "b"2) "a"3) "c
poniedziałek, 11 lipca 2011
LISTredis> LPUSH list aredis> LPUSH list bredis> RPUSH list c
redis> RPOPLPUSH list other:list"a"
redis> LRANGE list 0 31) "c"2) "b"
redis> LRANGE other:list 0 31) "a"
poniedziałek, 11 lipca 2011
SET
poniedziałek, 11 lipca 2011
SET
redis> SADD post:1:tag "ruby"redis> SADD post:1:tag "rails"redis> SADD post:1:tag "redis"
redis> SADD post:2:tag "redis"redis> SADD post:2:tag "resque"
redis> SINTER post:1:tag post:2:tag1) "redis"
poniedziałek, 11 lipca 2011
SETredis> SADD post:1:tag "ruby"redis> SADD post:1:tag "rails"redis> SADD post:1:tag "redis"
redis> SADD post:2:tag "redis"redis> SADD post:2:tag "resque"
redis> SUNIONSTORE tag post:1:tag post:2:tagredis> SMEMBERS tag1) "rails"2) "redis"3) "resque"4) "ruby"
poniedziałek, 11 lipca 2011
ZSET
poniedziałek, 11 lipca 2011
ZSET
redis> ZADD zset 1 3redis> ZADD zset 2 2redis> ZADD zset 3 1
redis> ZRANGE zset 0 -11) "3"2) "2"3) "1"
poniedziałek, 11 lipca 2011
HASH
poniedziałek, 11 lipca 2011
HASH
redis> HMSET hash string:1 Hello string:2 WebClusters
redis> HGETALL hash1) "string:1"2) "Hello"3) "string:2"4) "WebClusters"
poniedziałek, 11 lipca 2011
HASH
redis> HSET hash string:1 Byeredis> HSET hash string:3 2011
redis> HGETALL hash1) "string:1"2) "Bye"3) "string:2"4) "WebClusters"5) "string:3"6) "2011"
poniedziałek, 11 lipca 2011
RTFM
poniedziałek, 11 lipca 2011
poniedziałek, 11 lipca 2011
poniedziałek, 11 lipca 2011
poniedziałek, 11 lipca 2011
ZABÓJCZE CECHY
poniedziałek, 11 lipca 2011
TRANSAKCJE
poniedziałek, 11 lipca 2011
TRANSAKCJEredis> SET account:1 30redis> SET account:2 45
redis> MULTIredis> INCRBY account:1 15QUEUED
redis> DECRBY account:2 15QUEUED
redis> EXEC1) (integer) 452) (integer) 30
poniedziałek, 11 lipca 2011
PERSYSTENCJA
poniedziałek, 11 lipca 2011
PERSYSTENCJA
snapshot
append-only file
poniedziałek, 11 lipca 2011
PERSYSTENCJA
na żądanie
okresowa
poniedziałek, 11 lipca 2011
REPLIKACJA
poniedziałek, 11 lipca 2011
REPLIKACJA
poniedziałek, 11 lipca 2011
PIPELINING
poniedziałek, 11 lipca 2011
PIPELINING
poniedziałek, 11 lipca 2011
http://www.flickr.com/photos/chadelliott2012/5659144073/
poniedziałek, 11 lipca 2011
PIPELINING
poniedziałek, 11 lipca 2011
PAMIĘĆ WIRTUALNA
poniedziałek, 11 lipca 2011
PAMIĘĆ WIRTUALNA
poniedziałek, 11 lipca 2011
KLASTROWANIE
poniedziałek, 11 lipca 2011
http://www.flickr.com/photos/15708236@N07/2754478731/
poniedziałek, 11 lipca 2011
http://www.flickr.com/photos/dan4th/301092024/
poniedziałek, 11 lipca 2011
4096 #
poniedziałek, 11 lipca 2011
KLASTROWANIE
poniedziałek, 11 lipca 2011
KLASTROWANIE
redis> #1 GET foo-MOVED 3 192.168.1.1:6391
redis> #2 GET foo"bar"
poniedziałek, 11 lipca 2011
KLASTROWANIE
redis> #1 CLUSTER HINTS* magic *
redis> #2 GET foo"bar"
poniedziałek, 11 lipca 2011
REDIS-TRIB
poniedziałek, 11 lipca 2011
MEMCACHED?
poniedziałek, 11 lipca 2011
X 100 000
poniedziałek, 11 lipca 2011
SET
memcached redis
6.926125 s 8.470477 s
poniedziałek, 11 lipca 2011
PIPELINE SET
memcached redis
6.926125 s 0.916335 s
poniedziałek, 11 lipca 2011
GET
memcached redis
6.904938 s 7.572058 s
poniedziałek, 11 lipca 2011
PIPELINE GET
memcached redis
6.904938 s 0.651953 s
poniedziałek, 11 lipca 2011
MGET
memcached redis
1.010348 s 0.185136 s
poniedziałek, 11 lipca 2011
RAM
memcached redis
436 KB 1.1 MB
poniedziałek, 11 lipca 2011
RAM
k 17 - 22 bajty
v 19 - 24 bajty
poniedziałek, 11 lipca 2011
STRING
memcached redis
14 MB 13.9 MB
poniedziałek, 11 lipca 2011
INTEGER
memcached redis
11 MB 10.7 MB
poniedziałek, 11 lipca 2011
HASH
"an-average-key-1" => "1""an-average-key" => "1": "1"
poniedziałek, 11 lipca 2011
HASH
memcached redis
11 MB 9 MB
poniedziałek, 11 lipca 2011
PRAKTYKA
poniedziałek, 11 lipca 2011
RESQUE
poniedziałek, 11 lipca 2011
RESTMQ
poniedziałek, 11 lipca 2011
poniedziałek, 11 lipca 2011
WHO’S ONLINE?
poniedziałek, 11 lipca 2011
STATYSTYKI
poniedziałek, 11 lipca 2011
WYSZUKIWANIE
poniedziałek, 11 lipca 2011
SOCIAL GRAPH
poniedziałek, 11 lipca 2011
TIPS & TRICKS
poniedziałek, 11 lipca 2011
640K ought to be enough for anybody
poniedziałek, 11 lipca 2011
3 != “3”poniedziałek, 11 lipca 2011
32 > 64W BITACH
poniedziałek, 11 lipca 2011
http://www.flickr.com/photos/memestate/45986749/
poniedziałek, 11 lipca 2011
ONE MORE THING
poniedziałek, 11 lipca 2011
poniedziałek, 11 lipca 2011
http://www.flickr.com/photos/15708236@N07/2754478731/
poniedziałek, 11 lipca 2011
-- hello.lua-- the first program in every language
io.write("Hello world, from ",_VERSION,"!\n")
poniedziałek, 11 lipca 2011
redis = Redis.newscript = <<LUA local value = tonumber(redis.call('get', KEYS[1])) if value == nil then return {err = "Value at key is not integer"} end if value > tonumber(ARGV[1]) then value = value - 1 redis.call('set', KEYS[1], value) end return valueLUA
redis.set :x, 45.times { puts(redis.eval(script, 1, :x, 0)) }
poniedziałek, 11 lipca 2011
~/Code/webclusters-redis master $ ./run lua.rb32100
poniedziałek, 11 lipca 2011
https://github.com/filiptepper/webclusters-redis
poniedziałek, 11 lipca 2011
poniedziałek, 11 lipca 2011
O CZYM ZAPOMNIAŁEM?
poniedziałek, 11 lipca 2011