SlideShare a Scribd company logo
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

PDF
Node.js - A Quick Tour II
Felix Geisendörfer
 
PDF
Nodejs - A-quick-tour-v3
Felix Geisendörfer
 
PDF
Redis begins
DaeMyung Kang
 
PDF
Deep Visibility for Production Microservices
Paul Bauer
 
PDF
Elasticsearch 1.x Cluster Installation (VirtualBox)
Amir Sedighi
 
KEY
Node.js - A practical introduction (v2)
Felix Geisendörfer
 
PPTX
A simple introduction to redis
Zhichao Liang
 
PDF
Nodejs a-practical-introduction-oredev
Felix Geisendörfer
 
Node.js - A Quick Tour II
Felix Geisendörfer
 
Nodejs - A-quick-tour-v3
Felix Geisendörfer
 
Redis begins
DaeMyung Kang
 
Deep Visibility for Production Microservices
Paul Bauer
 
Elasticsearch 1.x Cluster Installation (VirtualBox)
Amir Sedighi
 
Node.js - A practical introduction (v2)
Felix Geisendörfer
 
A simple introduction to redis
Zhichao Liang
 
Nodejs a-practical-introduction-oredev
Felix Geisendörfer
 

What's hot (20)

PPTX
This is redis - feature and usecase
Kris Jeong
 
PDF
REDIS intro and how to use redis
Kris Jeong
 
KEY
Node.js - As a networking tool
Felix Geisendörfer
 
PDF
Nodejs - A quick tour (v5)
Felix Geisendörfer
 
PDF
Nodejs - Should Ruby Developers Care?
Felix Geisendörfer
 
PDF
Redis acc
DaeMyung Kang
 
PDF
Nodejs - A quick tour (v4)
Felix Geisendörfer
 
PDF
Distributed Data Processing Workshop - SBU
Amir Sedighi
 
PPT
Lightweight DAS components in Perl
guestbab097
 
PDF
Nodejs - A quick tour (v6)
Felix Geisendörfer
 
PPTX
Caching solutions with Redis
George Platon
 
PDF
Node.js in production
Felix Geisendörfer
 
PDF
Dirty - How simple is your database?
Felix Geisendörfer
 
PDF
Redis, a 2 minutes introduction
Mirko Calvaresi
 
PDF
Redis SoCraTes 2014
steffenbauer
 
PDF
Introduction to redis - version 2
Dvir Volk
 
PDF
TWJUG 2016 - Mogilefs, 簡約可靠的儲存方案
Hua Chu
 
PPT
New kid on the block node.js
Joel Divekar
 
PDF
Mac OS X Lion で作る WordPress local 環境
Yuriko IKEDA
 
PPTX
Backup, Restore, and Disaster Recovery
MongoDB
 
This is redis - feature and usecase
Kris Jeong
 
REDIS intro and how to use redis
Kris Jeong
 
Node.js - As a networking tool
Felix Geisendörfer
 
Nodejs - A quick tour (v5)
Felix Geisendörfer
 
Nodejs - Should Ruby Developers Care?
Felix Geisendörfer
 
Redis acc
DaeMyung Kang
 
Nodejs - A quick tour (v4)
Felix Geisendörfer
 
Distributed Data Processing Workshop - SBU
Amir Sedighi
 
Lightweight DAS components in Perl
guestbab097
 
Nodejs - A quick tour (v6)
Felix Geisendörfer
 
Caching solutions with Redis
George Platon
 
Node.js in production
Felix Geisendörfer
 
Dirty - How simple is your database?
Felix Geisendörfer
 
Redis, a 2 minutes introduction
Mirko Calvaresi
 
Redis SoCraTes 2014
steffenbauer
 
Introduction to redis - version 2
Dvir Volk
 
TWJUG 2016 - Mogilefs, 簡約可靠的儲存方案
Hua Chu
 
New kid on the block node.js
Joel Divekar
 
Mac OS X Lion で作る WordPress local 環境
Yuriko IKEDA
 
Backup, Restore, and Disaster Recovery
MongoDB
 
Ad

Similar to WebClusters, Redis (20)

PDF
Redis — The AK-47 of Post-relational Databases
Karel Minarik
 
PPTX
Introduction to Redis
Maarten Smeets
 
PPTX
10 Ways to Scale Your Website Silicon Valley Code Camp 2019
Dave Nielsen
 
PPTX
10 Ways to Scale with Redis - LA Redis Meetup 2019
Dave Nielsen
 
PDF
Living the Nomadic life - Nic Jackson
Paris Container Day
 
PDF
Nomad Multi-Cloud
Nic Jackson
 
PDF
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
Redis Labs
 
PDF
Redis 101
Doğan Can
 
PDF
Redispresentation apac2012
Ankur Gupta
 
PDF
Mini-Training: Redis
Betclic Everest Group Tech Team
 
PDF
MySQL for Beginners - part 1
Ivan Zoratti
 
PDF
Redis — memcached on steroids
Robert Lehmann
 
PDF
Troubleshooting redis
DaeMyung Kang
 
PDF
Troubleshooting Redis- DaeMyung Kang, Kakao
Redis Labs
 
PPTX
20141011 mastering mysqlnd
do_aki
 
PDF
Spider Setup with AWS/sandbox
I Goo Lee
 
PDF
MySQL Spider Architecture
I Goo Lee
 
PDF
Boosting Machine Learning with Redis Modules and Spark
Dvir Volk
 
PDF
Docker, the Future of DevOps
andersjanmyr
 
PPT
TopDB data transfer
Chonpin HSU
 
Redis — The AK-47 of Post-relational Databases
Karel Minarik
 
Introduction to Redis
Maarten Smeets
 
10 Ways to Scale Your Website Silicon Valley Code Camp 2019
Dave Nielsen
 
10 Ways to Scale with Redis - LA Redis Meetup 2019
Dave Nielsen
 
Living the Nomadic life - Nic Jackson
Paris Container Day
 
Nomad Multi-Cloud
Nic Jackson
 
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
Redis Labs
 
Redis 101
Doğan Can
 
Redispresentation apac2012
Ankur Gupta
 
Mini-Training: Redis
Betclic Everest Group Tech Team
 
MySQL for Beginners - part 1
Ivan Zoratti
 
Redis — memcached on steroids
Robert Lehmann
 
Troubleshooting redis
DaeMyung Kang
 
Troubleshooting Redis- DaeMyung Kang, Kakao
Redis Labs
 
20141011 mastering mysqlnd
do_aki
 
Spider Setup with AWS/sandbox
I Goo Lee
 
MySQL Spider Architecture
I Goo Lee
 
Boosting Machine Learning with Redis Modules and Spark
Dvir Volk
 
Docker, the Future of DevOps
andersjanmyr
 
TopDB data transfer
Chonpin HSU
 
Ad

More from Filip Tepper (7)

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

WebClusters, Redis

Editor's Notes

  • #2: 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
  • #3: 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
  • #4: \n
  • #5: 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
  • #6: 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
  • #7: 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
  • #8: \n
  • #9: \n
  • #10: 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
  • #11: 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
  • #12: \n
  • #13: \n
  • #14: \n
  • #15: w redisie mo&amp;#x17C;emy te&amp;#x17C; trzyma&amp;#x107; (jako stringi) integery. i wykonywa&amp;#x107; na nich operacje\n
  • #16: 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
  • #17: 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
  • #18: \n
  • #19: \n
  • #20: zbi&amp;#xF3;r, mo&amp;#x17C;liwe ciekawe operacje UNION, INTERSECTION\n
  • #21: mo&amp;#x17C;na mie&amp;#x107; zastrze&amp;#x17C;enia co do wydajno&amp;#x15B;ci\n
  • #22: \n
  • #23: sortowane zbiory\nrzecz, kt&amp;#xF3;ra wykorzystali&amp;#x15B;my w Blipie\n
  • #24: \n
  • #25: \n
  • #26: \n
  • #27: 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
  • #28: \n
  • #29: \n
  • #30: \n
  • #31: \n
  • #32: \n
  • #33: \n
  • #34: \n
  • #35: \n
  • #36: 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
  • #37: 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
  • #38: 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
  • #39: 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
  • #40: \n
  • #41: 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
  • #42: 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
  • #43: 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
  • #44: \n
  • #45: 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
  • #46: \n
  • #47: \n
  • #48: 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
  • #49: 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
  • #50: 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
  • #51: klastrowanie - dummy client\n
  • #52: klastrowanie - sprytny klient\n
  • #53: 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
  • #54: jak si&amp;#x119; to ma do memcached?\nzale&amp;#x17C;y od zastosowania.\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: ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  • #65: \n
  • #66: ka&amp;#x17C;dy z test&amp;#xF3;w to 100000 operacji\n
  • #67: \n
  • #68: 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
  • #69: \n
  • #70: \n
  • #71: \n
  • #72: \n
  • #73: \n
  • #74: \n
  • #75: \n
  • #76: 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
  • #77: redis bardzo dobrze optymalizuje liczby - nie trzyma ich w pami&amp;#x119;ci jako stringi\n
  • #78: w zale&amp;#x17C;no&amp;#x15B;ci od potrzeb - lepiej skompilowa&amp;#x107; Redisa w 32bitowej architekturze\n
  • #79: 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
  • #80: \n
  • #81: skrypty lua\n
  • #82: funkcjonalno&amp;#x15B;&amp;#x107; eksperymentalna\n
  • #83: 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
  • #84: \n
  • #85: \n
  • #86: \n
  • #87: \n
  • #88: \n