redis
TRANSCRIPT
![Page 1: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/1.jpg)
Introduction to Redis Byeongweon Moon / Redduck
![Page 2: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/2.jpg)
Ready to Redis
•Document-oriented Database
•Key-Value Data Store Program
•Key can contain strings, hashes, lists, sets and sorted sets
•Value can contain strings, lists, sets, sorted set
•Redis use RAM for data store
![Page 3: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/3.jpg)
Key-Value Data Store
• Insert data with specific key
•Get data with key by O(1) compexity
•Value can contain structured strings like as JSON, XML
![Page 4: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/4.jpg)
List Control
•SET : LINSERT, LPUSH, RPUSH, LSET
•GET : LPOP, LRANGE, RPOP
•DEL : LREM
•ETC : LTRIM, LLEN
![Page 5: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/5.jpg)
Pushing IDs instead of the actual data
$ redis-cli incr next.news.id (integer) 1 $ redis-cli set news:1:title "Redis is simple" OK $ redis-cli set news:1:url "http://code.google.com/p/redis" OK $ redis-cli lpush submitted.news 1 OK$ redis-cli lrange submitted.news 0 -1 1) “1”
![Page 6: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/6.jpg)
Set Control
•SET : SADD,
•GET : SPOP, SRANDMEMBER, SMEMBERS
•DEL : SREM
•ETC : SINTER, SUNION, SCARD, SDIFF, SMOVE, SISMEMBER
![Page 7: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/7.jpg)
Redis Sets
$ redis-cli sadd news:1000:tags 1 (integer) 1 $ redis-cli sadd news:1000:tags 2 (integer) 1 $ redis-cli sadd news:1000:tags 5 (integer) 1 $ redis-cli sadd tag:1:objects 1000 (integer) 1 $ redis-cli sadd tag:2:objects 1000 (integer) 1 $ redis-cli sadd tag:5:objects 1000 (integer) 1$ redis-cli sinter tag:1:objects tag:2:objects tag:5:objects 1000 1) “1000”
![Page 8: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/8.jpg)
Sorted Set Control
•SET : ZADD, ZINCRBY
•GET : ZRANGE, ZRANGEBYSCORE, ZSCORE, ZCARD, ZRANK, ZCOUNT
•DEL : ZREM, ZREMRANGEBYRANK, ZREMRANGEBYSCORE
•ETC : ZINTERSTORE, Z UNIONSTORE
![Page 9: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/9.jpg)
Sorted sets
$ redis-cli zadd hackers 1940 "Alan Kay" (integer) 1 $ redis-cli zadd hackers 1953 "Richard Stallman" (integer) 1 $ redis-cli zadd hackers 1969 "Linus Torvalds" (integer) 1 $ redis-cli zadd hackers 1912 "Alan Turing" (integer) 1$ redis-cli zrange hackers 0 -1 1. Alan Turing 2. Alan Kay 3. Richard Stallman 4. Linus Torvalds
![Page 10: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/10.jpg)
Replication
•Master-Slave replication
•Master can have multiple slaves
•Slaves are able to accept other slaves connections
•Slaves can also be connected to other slaves in graph-like structure
•Redis replication is non-blocking on the master side. but blocking on the slave side.
![Page 11: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/11.jpg)
How replication works
•To configure add below line to slave's configuration file slaveof IP PORT
•After configuration done. when upon connection slave sends a SYNC command
•Master start background data saving and collect all new commands received that will modify dataset
•When background saving complete, transfers the dataset to slave, then send saved commands
![Page 12: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/12.jpg)
Publish / Subcribe
•Messaging pattern where senders of messages do not program the messages to be sent directly to specific receiver.
•SUBCRIBE [channel] command create channel or subscribe channel
•PUBLISH [channel] [message] command send message via
•Support pattern matching subscribe with PSUBSCRIBE
![Page 13: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/13.jpg)
Pipelining
•Whatever network speed fast or slow, there's always latency.
•To avoid network latency. Redis support multi commands send with one request.
•Send commands with new line delemiter echo -en "PING\r\nPING\r\nPING\r\n" | nc localhost 6379
•Result wiil received after all commands processed
![Page 14: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/14.jpg)
Benchmarks
![Page 15: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/15.jpg)
Who's using Redis?
•github
•stackoverflow
•blizzard
•digg
• .....
![Page 16: Redis](https://reader036.vdocuments.site/reader036/viewer/2022082416/554f7645b4c9052a518b474f/html5/thumbnails/16.jpg)
Thanks, Any Questions?