Filip Tepper - Redis

Post on 11-Mar-2015

42 views 2 download

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

Transcript of Filip Tepper - Redis

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

TWITTER

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