Redis

16
Introduction to R edis Byeongweon Moon / Redduck

Transcript of Redis

Page 1: Redis

Introduction to Redis Byeongweon Moon / Redduck

Page 2: Redis

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

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

List Control

•SET : LINSERT, LPUSH, RPUSH, LSET

•GET : LPOP, LRANGE, RPOP

•DEL : LREM

•ETC : LTRIM, LLEN

Page 5: Redis

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

Set Control

•SET : SADD,

•GET : SPOP, SRANDMEMBER, SMEMBERS

•DEL : SREM

•ETC : SINTER, SUNION, SCARD, SDIFF, SMOVE, SISMEMBER

Page 7: Redis

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

Sorted Set Control

•SET : ZADD, ZINCRBY

•GET : ZRANGE, ZRANGEBYSCORE, ZSCORE, ZCARD, ZRANK, ZCOUNT

•DEL : ZREM, ZREMRANGEBYRANK, ZREMRANGEBYSCORE

•ETC : ZINTERSTORE, Z UNIONSTORE

Page 9: Redis

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

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

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

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

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

Benchmarks

Page 15: Redis

Who's using Redis?

•Twitter

•github

•stackoverflow

•blizzard

•digg

• .....

Page 16: Redis

Thanks, Any Questions?