SlideShare a Scribd company logo
1 of 87
serwer struktur danych w praktyce
CZEŚĆ!
jestem filip.
PLAN
 co to jest redis?
   typy danych
 zabójcze cechy
redis a memcached
 redis w praktyce
   tips & tricks
NOSQL
REDIS TO...



zaawansowany system klucz-wartość
REDIS TO...



serwer struktur danych
@ANTIREZ
 @pnoordhuis
WebClusters, Redis
YYY...
WebClusters, Redis
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"
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"
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
WebClusters, Redis
WebClusters, Redis
WebClusters, Redis
ZABÓJCZE 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
PERSYSTENCJA
PERSYSTENCJA



     snapshot
  append-only file
PERSYSTENCJA



   na żądanie
   okresowa
REPLIKACJA
REPLIKACJA
PIPELINING
PIPELINING
http://www.flickr.com/photos/chadelliott2012/5659144073/
PIPELINING
PAMIĘĆ WIRTUALNA
PAMIĘĆ WIRTUALNA
KLASTROWANIE
http://www.flickr.com/photos/15708236@N07/2754478731/
http://www.flickr.com/photos/dan4th/301092024/
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


"an-average-key-1" => "1"
"an-average-key" => "1": "1"
HASH


memcached          redis




  11 MB            9 MB
PRAKTYKA
RESQUE
RESTMQ
TWITTER
WHO’S ONLINE?
STATYSTYKI
WYSZUKIWANIE
SOCIAL GRAPH
TIPS & TRICKS
640K ought to be
enough for anybody
3 != “3”
32 > 64
  W BITACH
http://www.flickr.com/photos/memestate/45986749/
ONE MORE THING
WebClusters, Redis
http://www.flickr.com/photos/15708236@N07/2754478731/
-- hello.lua
-- the first 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)) }
~/Code/webclusters-redis master $ ./run lua.rb
3
2
1
0
0
https://github.com/filiptepper/webclusters-redis
WebClusters, Redis
O CZYM ZAPOMNIAŁEM?

More Related Content

What's hot

This is redis - feature and usecase
This is redis - feature and usecaseThis is redis - feature and usecase
This is redis - feature and usecaseKris Jeong
 
REDIS intro and how to use redis
REDIS intro and how to use redisREDIS intro and how to use redis
REDIS intro and how to use redisKris Jeong
 
Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?Felix Geisendörfer
 
Distributed Data Processing Workshop - SBU
Distributed Data Processing Workshop - SBUDistributed Data Processing Workshop - SBU
Distributed Data Processing Workshop - SBUAmir Sedighi
 
Lightweight DAS components in Perl
Lightweight DAS components in PerlLightweight DAS components in Perl
Lightweight DAS components in Perlguestbab097
 
Caching solutions with Redis
Caching solutions   with RedisCaching solutions   with Redis
Caching solutions with RedisGeorge Platon
 
Dirty - How simple is your database?
Dirty - How simple is your database?Dirty - How simple is your database?
Dirty - How simple is your database?Felix Geisendörfer
 
Redis, a 2 minutes introduction
Redis, a 2 minutes introductionRedis, a 2 minutes introduction
Redis, a 2 minutes introductionMirko Calvaresi
 
Redis SoCraTes 2014
Redis SoCraTes 2014Redis SoCraTes 2014
Redis SoCraTes 2014steffenbauer
 
Introduction to redis - version 2
Introduction to redis - version 2Introduction to redis - version 2
Introduction to redis - version 2Dvir Volk
 
TWJUG 2016 - Mogilefs, 簡約可靠的儲存方案
TWJUG 2016 - Mogilefs, 簡約可靠的儲存方案TWJUG 2016 - Mogilefs, 簡約可靠的儲存方案
TWJUG 2016 - Mogilefs, 簡約可靠的儲存方案Hua Chu
 
New kid on the block node.js
New kid on the block node.jsNew kid on the block node.js
New kid on the block node.jsJoel Divekar
 
Mac OS X Lion で作る WordPress local 環境
Mac OS X Lion で作る WordPress local 環境Mac OS X Lion で作る WordPress local 環境
Mac OS X Lion で作る WordPress local 環境Yuriko IKEDA
 
Backup, Restore, and Disaster Recovery
Backup, Restore, and Disaster RecoveryBackup, Restore, and Disaster Recovery
Backup, Restore, and Disaster RecoveryMongoDB
 

What's hot (20)

This is redis - feature and usecase
This is redis - feature and usecaseThis is redis - feature and usecase
This is redis - feature and usecase
 
REDIS intro and how to use redis
REDIS intro and how to use redisREDIS intro and how to use redis
REDIS intro and how to use redis
 
Node.js - As a networking tool
Node.js - As a networking toolNode.js - As a networking tool
Node.js - As a networking tool
 
Nodejs - A quick tour (v5)
Nodejs - A quick tour (v5)Nodejs - A quick tour (v5)
Nodejs - A quick tour (v5)
 
Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?
 
Redis acc
Redis accRedis acc
Redis acc
 
Nodejs - A quick tour (v4)
Nodejs - A quick tour (v4)Nodejs - A quick tour (v4)
Nodejs - A quick tour (v4)
 
Distributed Data Processing Workshop - SBU
Distributed Data Processing Workshop - SBUDistributed Data Processing Workshop - SBU
Distributed Data Processing Workshop - SBU
 
Lightweight DAS components in Perl
Lightweight DAS components in PerlLightweight DAS components in Perl
Lightweight DAS components in Perl
 
Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)
 
Caching solutions with Redis
Caching solutions   with RedisCaching solutions   with Redis
Caching solutions with Redis
 
Node.js in production
Node.js in productionNode.js in production
Node.js in production
 
Dirty - How simple is your database?
Dirty - How simple is your database?Dirty - How simple is your database?
Dirty - How simple is your database?
 
Redis, a 2 minutes introduction
Redis, a 2 minutes introductionRedis, a 2 minutes introduction
Redis, a 2 minutes introduction
 
Redis SoCraTes 2014
Redis SoCraTes 2014Redis SoCraTes 2014
Redis SoCraTes 2014
 
Introduction to redis - version 2
Introduction to redis - version 2Introduction to redis - version 2
Introduction to redis - version 2
 
TWJUG 2016 - Mogilefs, 簡約可靠的儲存方案
TWJUG 2016 - Mogilefs, 簡約可靠的儲存方案TWJUG 2016 - Mogilefs, 簡約可靠的儲存方案
TWJUG 2016 - Mogilefs, 簡約可靠的儲存方案
 
New kid on the block node.js
New kid on the block node.jsNew kid on the block node.js
New kid on the block node.js
 
Mac OS X Lion で作る WordPress local 環境
Mac OS X Lion で作る WordPress local 環境Mac OS X Lion で作る WordPress local 環境
Mac OS X Lion で作る WordPress local 環境
 
Backup, Restore, and Disaster Recovery
Backup, Restore, and Disaster RecoveryBackup, Restore, and Disaster Recovery
Backup, Restore, and Disaster Recovery
 

Similar to WebClusters, Redis

Redis — The AK-47 of Post-relational Databases
Redis — The AK-47 of Post-relational DatabasesRedis — The AK-47 of Post-relational Databases
Redis — The AK-47 of Post-relational DatabasesKarel Minarik
 
10 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 201910 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 2019Dave Nielsen
 
10 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 201910 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 2019Dave Nielsen
 
Living the Nomadic life - Nic Jackson
Living the Nomadic life - Nic JacksonLiving the Nomadic life - Nic Jackson
Living the Nomadic life - Nic JacksonParis Container Day
 
Nomad Multi-Cloud
Nomad Multi-CloudNomad Multi-Cloud
Nomad Multi-CloudNic Jackson
 
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, HerokuPostgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, HerokuRedis Labs
 
Redispresentation apac2012
Redispresentation apac2012Redispresentation apac2012
Redispresentation apac2012Ankur Gupta
 
MySQL for Beginners - part 1
MySQL for Beginners - part 1MySQL for Beginners - part 1
MySQL for Beginners - part 1Ivan Zoratti
 
Redis — memcached on steroids
Redis — memcached on steroidsRedis — memcached on steroids
Redis — memcached on steroidsRobert Lehmann
 
Troubleshooting redis
Troubleshooting redisTroubleshooting redis
Troubleshooting redisDaeMyung Kang
 
Troubleshooting Redis- DaeMyung Kang, Kakao
Troubleshooting Redis- DaeMyung Kang, KakaoTroubleshooting Redis- DaeMyung Kang, Kakao
Troubleshooting Redis- DaeMyung Kang, KakaoRedis Labs
 
20141011 mastering mysqlnd
20141011 mastering mysqlnd20141011 mastering mysqlnd
20141011 mastering mysqlnddo_aki
 
Spider Setup with AWS/sandbox
Spider Setup with AWS/sandboxSpider Setup with AWS/sandbox
Spider Setup with AWS/sandboxI Goo Lee
 
MySQL Spider Architecture
MySQL Spider ArchitectureMySQL Spider Architecture
MySQL Spider ArchitectureI Goo Lee
 
Boosting Machine Learning with Redis Modules and Spark
Boosting Machine Learning with Redis Modules and SparkBoosting Machine Learning with Redis Modules and Spark
Boosting Machine Learning with Redis Modules and SparkDvir Volk
 
Docker, the Future of DevOps
Docker, the Future of DevOpsDocker, the Future of DevOps
Docker, the Future of DevOpsandersjanmyr
 
TopDB data transfer
TopDB data transferTopDB data transfer
TopDB data transferChonpin HSU
 

Similar to WebClusters, Redis (20)

Redis — The AK-47 of Post-relational Databases
Redis — The AK-47 of Post-relational DatabasesRedis — The AK-47 of Post-relational Databases
Redis — The AK-47 of Post-relational Databases
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
10 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 201910 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 2019
 
10 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 201910 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 2019
 
Living the Nomadic life - Nic Jackson
Living the Nomadic life - Nic JacksonLiving the Nomadic life - Nic Jackson
Living the Nomadic life - Nic Jackson
 
Nomad Multi-Cloud
Nomad Multi-CloudNomad Multi-Cloud
Nomad Multi-Cloud
 
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, HerokuPostgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
 
Redis 101
Redis 101Redis 101
Redis 101
 
Redispresentation apac2012
Redispresentation apac2012Redispresentation apac2012
Redispresentation apac2012
 
Mini-Training: Redis
Mini-Training: RedisMini-Training: Redis
Mini-Training: Redis
 
MySQL for Beginners - part 1
MySQL for Beginners - part 1MySQL for Beginners - part 1
MySQL for Beginners - part 1
 
Redis — memcached on steroids
Redis — memcached on steroidsRedis — memcached on steroids
Redis — memcached on steroids
 
Troubleshooting redis
Troubleshooting redisTroubleshooting redis
Troubleshooting redis
 
Troubleshooting Redis- DaeMyung Kang, Kakao
Troubleshooting Redis- DaeMyung Kang, KakaoTroubleshooting Redis- DaeMyung Kang, Kakao
Troubleshooting Redis- DaeMyung Kang, Kakao
 
20141011 mastering mysqlnd
20141011 mastering mysqlnd20141011 mastering mysqlnd
20141011 mastering mysqlnd
 
Spider Setup with AWS/sandbox
Spider Setup with AWS/sandboxSpider Setup with AWS/sandbox
Spider Setup with AWS/sandbox
 
MySQL Spider Architecture
MySQL Spider ArchitectureMySQL Spider Architecture
MySQL Spider Architecture
 
Boosting Machine Learning with Redis Modules and Spark
Boosting Machine Learning with Redis Modules and SparkBoosting Machine Learning with Redis Modules and Spark
Boosting Machine Learning with Redis Modules and Spark
 
Docker, the Future of DevOps
Docker, the Future of DevOpsDocker, the Future of DevOps
Docker, the Future of DevOps
 
TopDB data transfer
TopDB data transferTopDB data transfer
TopDB data transfer
 

More from Filip Tepper

Getting the most out of your Ruby on Rails applications: from zero to hero
Getting the most out of your Ruby on Rails applications: from zero to heroGetting the most out of your Ruby on Rails applications: from zero to hero
Getting the most out of your Ruby on Rails applications: from zero to heroFilip Tepper
 
OpenReaktor, Not Only SQL
OpenReaktor, Not Only SQLOpenReaktor, Not Only SQL
OpenReaktor, Not Only SQLFilip Tepper
 
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]Filip Tepper
 
Pan Oponka - Biografia
Pan Oponka - BiografiaPan Oponka - Biografia
Pan Oponka - BiografiaFilip Tepper
 
API. Czy warto i dlaczego tak?
API. Czy warto i dlaczego tak?API. Czy warto i dlaczego tak?
API. Czy warto i dlaczego tak?Filip Tepper
 

More from Filip Tepper (7)

ls &
ls &ls &
ls &
 
Getting the most out of your Ruby on Rails applications: from zero to hero
Getting the most out of your Ruby on Rails applications: from zero to heroGetting the most out of your Ruby on Rails applications: from zero to hero
Getting the most out of your Ruby on Rails applications: from zero to hero
 
OpenReaktor, Not Only SQL
OpenReaktor, Not Only SQLOpenReaktor, Not Only SQL
OpenReaktor, Not Only SQL
 
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
 
Pan Oponka - Biografia
Pan Oponka - BiografiaPan Oponka - Biografia
Pan Oponka - Biografia
 
Redis at WRUG
Redis at WRUGRedis at WRUG
Redis at WRUG
 
API. Czy warto i dlaczego tak?
API. Czy warto i dlaczego tak?API. Czy warto i dlaczego tak?
API. Czy warto i dlaczego tak?
 

WebClusters, Redis

Editor's Notes

  1. dlaczego go nie potrzebujesz dzisiaj, ale je&amp;#x15B;li masz szcz&amp;#x119;&amp;#x15B;cie - mo&amp;#x17C;esz potrzebowa&amp;#x107; go jutro\nnie chce was zniechecic - raczej pokazac dlaczego jest to trudne\n
  2. dzi&amp;#x119;kuj&amp;#x119; za zaproszenie, 100% ruby, okolice Javy, Freeport Metrics, pozosta&amp;#x142;e 100% obj-c\njestem praktykiem, nie teoretykiem - nie jestem z wykszta&amp;#x142;cenia informatykiem w prezentacji b&amp;#x119;dzie du&amp;#x17C;o skr&amp;#xF3;t&amp;#xF3;w, uproszcze&amp;#x144; i za&amp;#x142;o&amp;#x17C;e&amp;#x144; a priori - bo to zbyt szeroki temat na nieca&amp;#x142;e p&amp;#xF3;&amp;#x142; godziny, a ja nie jestem a&amp;#x17C; tak m&amp;#x105;dry ;-)\n
  3. \n
  4. redis to nosql\nplotki o &amp;#x15B;mierci SQL-a s&amp;#x105; mocno przesadzone\nbo i skala problem&amp;#xF3;w wymagaj&amp;#x105;cych nosqla jest ograniczone\n
  5. bo mo&amp;#x17C;e dzia&amp;#x142;a&amp;#x107; jak klucz warto&amp;#x15B;&amp;#x107;, optymalizuje warto&amp;#x15B;ci, jest szybki i milusi\n\n
  6. bo warto&amp;#x15B;ci&amp;#x105; mo&amp;#x17C;e by&amp;#x107; tak&amp;#x17C;e jedna ze struktur, kt&amp;#xF3;re istniej&amp;#x105; w Redisie\nnie tylko proste &amp;#x142;a&amp;#x144;cuchy tekstowe\n
  7. \n
  8. \n
  9. to nie b&amp;#x119;dzie &amp;#x142;atwa prezentacja - redis, mimo, &amp;#x17C;e to jeden system to ze wzgl&amp;#x119;de na liczne ga&amp;#x142;&amp;#x119;zie i eksperymentalne funkcje\nwymaga czasu na jego poznanie i dostosowanie\nten ekran jest ju&amp;#x17C; dawno nieaktualny - prezentacj&amp;#x119; zacz&amp;#x105;&amp;#x142;em przygotowywa&amp;#x107; miesi&amp;#x105;c temu\n
  10. A system rozwija si&amp;#x119; ci&amp;#x105;gle. to jest wiadomo&amp;#x15B;&amp;#x107; z wczorajszego poranka\nwarto &amp;#x15B;ledzi&amp;#x107; jego rozw&amp;#xF3;j\n
  11. \n
  12. \n
  13. \n
  14. w redisie mo&amp;#x17C;emy te&amp;#x17C; trzyma&amp;#x107; (jako stringi) integery. i wykonywa&amp;#x107; na nich operacje\n
  15. mo&amp;#x17C;na te&amp;#x17C; modyfikowa&amp;#x107; warto&amp;#x15B;ci &amp;#x142;a&amp;#x144;cuch&amp;#xF3;w tekstowych\n
  16. sorted by insertion order\nlisty z blokowaniem warto&amp;#x15B;ci, rpoplpush\nbodaj najpopularniejsze zastosowanie redisa w sferze us&amp;#x142;ug - kolejki wiadomo&amp;#x15B;ci\n
  17. \n
  18. \n
  19. zbi&amp;#xF3;r, mo&amp;#x17C;liwe ciekawe operacje UNION, INTERSECTION\n
  20. mo&amp;#x17C;na mie&amp;#x107; zastrze&amp;#x17C;enia co do wydajno&amp;#x15B;ci\n
  21. \n
  22. sortowane zbiory\nrzecz, kt&amp;#xF3;ra wykorzystali&amp;#x15B;my w Blipie\n
  23. \n
  24. \n
  25. \n
  26. protok&amp;#xF3;&amp;#x142; Redisa zwraca podstawowe warto&amp;#x15B;ci\nzak&amp;#x142;ada obs&amp;#x142;ug&amp;#x119; tego po stronie klienta\n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. snapshot - tworzony jest fork, redis zapisuje stan swojej bazy do pliku binarnego\naof - zapisuje ka&amp;#x17C;d&amp;#x105; komend&amp;#x119; do pliku - 100% pewno&amp;#x15B;ci odzyskania danych, bardzo d&amp;#x142;ugi proces &amp;#x142;adowania\naof - mo&amp;#x17C;liwy jest rewrite\n
  36. dla snapshotu\nna &amp;#x17C;&amp;#x105;danie - komendy SAVE lub BGSAVE\nokresowa - je&amp;#x15B;li w okre&amp;#x15B;lonym przedziale czasu dosz&amp;#x142;o do zmian w X kluczy\n
  37. po co replikacja? - zabezpieczenie przed padem\nskalowanie ci&amp;#x119;&amp;#x17C;kich operacji - SORT\nreplikacja nie blokuje mastera - replikacja blokuje slave&amp;#x2019;a\n
  38. master mo&amp;#x17C;e mie&amp;#x107; wiele slave&amp;#x2019;&amp;#xF3;w\nslave mo&amp;#x17C;e by&amp;#x107; masterem dla kolejnego zestawu slave&amp;#x2019;&amp;#xF3;w\nprzyk&amp;#x142;adowo - mamy zestaw master / slave-slave / slave-slave - zapisujemy dane tylko na ostatnim etapie\n
  39. \n
  40. bez pipeliningu - czekamy na odpowied&amp;#x17A; na ka&amp;#x17C;de &amp;#x17C;&amp;#x105;danie\nwk&amp;#x142;adamy dane - odpowied&amp;#x17A;, wk&amp;#x142;adamy - odpowied&amp;#x17A;\n
  41. ale pr&amp;#x119;dzej czy p&amp;#xF3;&amp;#x17A;niej to mo&amp;#x17C;e by&amp;#x107; za ma&amp;#x142;o - wydajno&amp;#x15B;&amp;#x107; b&amp;#x119;dzie spada&amp;#x107;\n
  42. bez pipeliningu - czekamy na odpowied&amp;#x17A; na ka&amp;#x17C;de &amp;#x17C;&amp;#x105;danie\nwk&amp;#x142;adamy dane - odpowied&amp;#x17A;, wk&amp;#x142;adamy - odpowied&amp;#x17A;\n
  43. \n
  44. minimalne wymaganie redisa - wszystkie klucze zawsze musz&amp;#x105; by&amp;#x107; w pami&amp;#x119;ci\nale ca&amp;#x142;&amp;#x105; reszt&amp;#x119; mo&amp;#x17C;na trzyma&amp;#x107; w pami&amp;#x119;ci wirtualnej\nwarto si&amp;#x119; zastanowi&amp;#x107; czy lepiej nie skorzysta&amp;#x107; z hashy\nale je&amp;#x15B;&amp;#x142;i nie zale&amp;#x17C;y nam na wydajno&amp;#x15B;ci - mo&amp;#x17C;na ustawi&amp;#x107; zerow&amp;#x105; pami&amp;#x119;&amp;#x107; dla warto&amp;#x15B;ci\n
  45. \n
  46. \n
  47. poszczeg&amp;#xF3;lny w&amp;#x119;z&amp;#x142;y w klastrze rozmawiaj&amp;#x105; ze sob&amp;#x105; protoko&amp;#x142;em binarnym\nnormalnie redis korzysta z protoko&amp;#x142;u tekstowego - tutaj zosta&amp;#x142;o to zoptymalizowane\n
  48. klaster redisa jest dzielony na 4096 slot&amp;#xF3;w na hashe\nw momencie tworzenia klastra nale&amp;#x17C;y sloty do poszczeg&amp;#xF3;lnych instancji\n
  49. tutaj dla u&amp;#x142;atwienia - podzielimy sobie na 6 slot&amp;#xF3;w, kt&amp;#xF3;re zostan&amp;#x105; roz&amp;#x142;o&amp;#x17C;one na 3 w&amp;#x119;z&amp;#x142;ach\n
  50. klastrowanie - dummy client\n
  51. klastrowanie - sprytny klient\n
  52. automatyczne zarz&amp;#x105;dzanie klastrem\nnarz&amp;#x119;dzie pomagaj&amp;#x105;ce w tworzeniu klastra\nsprawdzenie zgodno&amp;#x15B;ci klastra\ndodawanie nowych element&amp;#xF3;w do klastra\n
  53. jak si&amp;#x119; to ma do memcached?\nzale&amp;#x17C;y od zastosowania.\n
  54. ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  55. ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  56. ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  57. ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  58. ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  59. ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  60. ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  61. ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  62. ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  63. ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  64. \n
  65. ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  66. \n
  67. Resque is a Redis-backed Ruby library for creating background jobs, placing those jobs on multiple queues, and processing them later.\nJedno z pierwszych narz&amp;#x119;dzie powsta&amp;#x142;ych dzi&amp;#x119;ki Redisowi.\nU&amp;#x17C;ywane w GitHubie\n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. bill gates twierdzi, &amp;#x17C;e powiedzia&amp;#x142; wiele g&amp;#x142;upich rzeczy\nale tego nie,\nfragmentacja kt&amp;#xF3;ra jest rozwi&amp;#x105;zywana za pomoc&amp;#x105; r&amp;#xF3;&amp;#x17C;nych malloc&amp;#xF3;w\n
  76. redis bardzo dobrze optymalizuje liczby - nie trzyma ich w pami&amp;#x119;ci jako stringi\n
  77. w zale&amp;#x17C;no&amp;#x15B;ci od potrzeb - lepiej skompilowa&amp;#x107; Redisa w 32bitowej architekturze\n
  78. monitoruj, naucz si&amp;#x119;\nto nowa zabawka, zwykle dzia&amp;#x142;a - problemem nie jest stabilno&amp;#x15B;&amp;#x107;, bo ta jest wy&amp;#x15B;mienita.\n
  79. \n
  80. skrypty lua\n
  81. funkcjonalno&amp;#x15B;&amp;#x107; eksperymentalna\n
  82. j&amp;#x119;zyk skryptowy pierwotnie zaprojektowany dla rozszerzenia funkcjonalno&amp;#x15B;ci r&amp;#xF3;&amp;#x17C;nych aplikacji, jednak cz&amp;#x119;sto u&amp;#x17C;ywany jako samodzielny j&amp;#x119;zyk.\n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n