Professional Documents
Culture Documents
CZE!
jestem lip.
PLAN
co to jest redis? typy danych zabjcze cechy redis a memcached redis w praktyce tips & tricks
poniedziaek, 11 lipca 2011
NOSQL
REDIS TO...
REDIS TO...
@ANTIREZ
@pnoordhuis
YYY...
STRUKTURY DANYCH
STRING
STRING
redis> SET my:key "value" redis> GET my:key "value"
STRING
redis> SET my:incr "10" redis> INCR my:incr redis> GET my:incr "11"
STRING
redis> SET hello:world "Web" redis> APPEND hello:world "Clusters" redis> GET hello:world "WebClusters" redis> GETRANGE hello:world 0 2 "Web"
LIST
LIST
redis> LPUSH list a redis> LPUSH list b redis> RPUSH list c redis> LRANGE list 0 2 1) "b" 2) "a" 3) "c
LIST
redis> LPUSH list a redis> LPUSH list b redis> RPUSH list c redis> RPOPLPUSH list other:list "a" redis> LRANGE list 0 3 1) "c" 2) "b" redis> LRANGE other:list 0 3 1) "a"
poniedziaek, 11 lipca 2011
SET
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:tag 1) "redis"
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> SUNIONSTORE tag post:1:tag post:2:tag redis> SMEMBERS tag 1) "rails" 2) "redis" 3) "resque" 4) "ruby"
poniedziaek, 11 lipca 2011
ZSET
ZSET
redis> ZADD zset 1 3 redis> ZADD zset 2 2 redis> ZADD zset 3 1 redis> ZRANGE zset 0 -1 1) "3" 2) "2" 3) "1"
HASH
HASH
redis> HMSET hash string:1 Hello string:2 WebClusters redis> HGETALL hash 1) "string:1" 2) "Hello" 3) "string:2" 4) "WebClusters"
HASH
redis> HSET hash string:1 Bye redis> HSET hash string:3 2011 redis> HGETALL hash 1) "string:1" 2) "Bye" 3) "string:2" 4) "WebClusters" 5) "string:3" 6) "2011"
RTFM
ZABJCZE CECHY
TRANSAKCJE
TRANSAKCJE
redis> SET account:1 30 redis> SET account:2 45 redis> MULTI redis> INCRBY account:1 15 QUEUED redis> DECRBY account:2 15 QUEUED redis> EXEC 1) (integer) 45 2) (integer) 30
poniedziaek, 11 lipca 2011
PERSYSTENCJA
PERSYSTENCJA
snapshot append-only le
PERSYSTENCJA
na danie okresowa
REPLIKACJA
REPLIKACJA
PIPELINING
PIPELINING
PIPELINING
PAMI WIRTUALNA
PAMI WIRTUALNA
KLASTROWANIE
4096 #
KLASTROWANIE
KLASTROWANIE
redis> #1 GET foo -MOVED 3 192.168.1.1:6391 redis> #2 GET foo "bar"
KLASTROWANIE
redis> #1 CLUSTER HINTS * magic * redis> #2 GET foo "bar"
REDIS-TRIB
MEMCACHED?
X 100 000
SET
memcached
redis
6.926125 s
8.470477 s
PIPELINE SET
memcached
redis
6.926125 s
0.916335 s
GET
memcached
redis
6.904938 s
7.572058 s
PIPELINE GET
memcached
redis
6.904938 s
0.651953 s
MGET
memcached
redis
1.010348 s
0.185136 s
RAM
memcached
redis
436 KB
1.1 MB
RAM
k 17 - 22 bajty v 19 - 24 bajty
STRING
memcached
redis
14 MB
13.9 MB
INTEGER
memcached
redis
11 MB
10.7 MB
HASH
HASH
memcached
redis
11 MB
9 MB
PRAKTYKA
RESQUE
RESTMQ
WHOS ONLINE?
STATYSTYKI
WYSZUKIWANIE
SOCIAL GRAPH
3 != 3
poniedziaek, 11 lipca 2011
32 > 64
W BITACH
poniedziaek, 11 lipca 2011
-- hello.lua -- the rst program in every language io.write("Hello world, from ",_VERSION,"!\n")
redis = Redis.new script = <<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 value LUA redis.set :x, 4 5.times { puts(redis.eval(script, 1, :x, 0)) }
poniedziaek, 11 lipca 2011
https://github.com/liptepper/webclusters-redis
O CZYM ZAPOMNIAEM?