the wonders of redis key value store series - day 2 - distributed... · the wonders of redis key...
TRANSCRIPT
![Page 1: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/1.jpg)
The Wonders of Redis key-value store
Shashank Tiwariblog: shanky.org | twitter: @tshanky
Tuesday, January 25, 2011
![Page 2: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/2.jpg)
List cmd: LINDEX
redis> lindex myList 1
"fourth_element"
redis> lrange myList 0 4
1) "seventh_element"
2) "fourth_element"
Tuesday, January 25, 2011
![Page 3: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/3.jpg)
List cmd: LINSERT(BEFORE or AFTER)
redis> linsert myList before "fourth_element" eighth_element
(integer) 3
redis> lrange myList 0 4
1) "seventh_element"
2) "eighth_element"
3) "fourth_element"
Tuesday, January 25, 2011
![Page 4: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/4.jpg)
List cmd: LSET(set element at index to value)
redis> lset myList 2 ninth_element
OK
redis> lrange myList 0 4
1) "seventh_element"
2) "eighth_element"
3) "ninth_element
Tuesday, January 25, 2011
![Page 5: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/5.jpg)
List cmd: BLPOP, BRPOP
• Blocking counterparts of LPOP and RPOP
• BLPOP list1 list2 list2 <timeout>
• Blocked until lpush, rpush or timeout.
Tuesday, January 25, 2011
![Page 6: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/6.jpg)
List cmd: BRPOPLPUSH
• Blocking version of RPOPLPUSH
• Blocked until lpush, rpush or timeout
Tuesday, January 25, 2011
![Page 7: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/7.jpg)
Set Commands
Tuesday, January 25, 2011
![Page 8: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/8.jpg)
Set cmd: SADD(element added only once)
• redis> sadd mySet first_element
• (integer) 1
• redis> sadd mySet first_element
• (integer) 0
Tuesday, January 25, 2011
![Page 9: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/9.jpg)
Set cmd: SCARD(set cardinality)
redis> scard mySet
(integer) 1
Tuesday, January 25, 2011
![Page 10: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/10.jpg)
Set cmd: SDIFF
redis> sadd set_1 a
(integer) 1
redis> sadd set_1 b
(integer) 1
redis> sadd set_2 a
(integer) 1
Tuesday, January 25, 2011
![Page 11: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/11.jpg)
Set cmd: SDIFFSTORE
• SDIFF and store result to destination
Tuesday, January 25, 2011
![Page 12: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/12.jpg)
Set cmd: SINTER
redis> sinter set_1 set_2
1) "a"
Tuesday, January 25, 2011
![Page 13: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/13.jpg)
Set cmd: SINTERSTORE
• SINTER and store result to destination
Tuesday, January 25, 2011
![Page 14: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/14.jpg)
Set cmd: SMEMBERS(list all)
redis> smembers set_3
1) "a"
Tuesday, January 25, 2011
![Page 15: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/15.jpg)
Set cmd: SISMEMBER
redis> sismember set_3 "a"
(integer) 1
Tuesday, January 25, 2011
![Page 16: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/16.jpg)
Set cmd: SPOP, SRANDMEMBER
redis> spop set_1
"a"
pops a random member
Tuesday, January 25, 2011
![Page 17: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/17.jpg)
Set cmd: SREM
redis> srem set_1 "a"
(integer) 1
Tuesday, January 25, 2011
![Page 18: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/18.jpg)
Set cmd: SMOVE(from source to destination)
redis> smembers set_1
1) "a"
2) "b"
redis> smove set_1 set_2 "a"
(integer) 1
Tuesday, January 25, 2011
![Page 19: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/19.jpg)
Set cmd: SUNION
redis> smembers set_1
1) "b"
redis> smembers set_2
1) "a"
redis> sunion set_1 set_2
1) "a"
Tuesday, January 25, 2011
![Page 20: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/20.jpg)
Set cmd: SUNIONSTORE
• SUNION and store result to destination
Tuesday, January 25, 2011
![Page 21: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/21.jpg)
Sorted Set Commands
Tuesday, January 25, 2011
![Page 22: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/22.jpg)
Sorted Set cmd:
• A set similar to that of the Set commands
• ZADD, ZCARD, ZRANGE, ZUNIONSTORE and more
• (not covered in this presentation)
Tuesday, January 25, 2011
![Page 23: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/23.jpg)
Authentication
• Password protection
• redis.conf -- requirepass <password>
• AUTH <password>
• then commands
Tuesday, January 25, 2011
![Page 24: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/24.jpg)
SELECT a db
redis> select 0
OK
redis> select 1
OK
new connection uses db 0
Tuesday, January 25, 2011
![Page 25: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/25.jpg)
Redis Internal Storage
• Everything is stored as strings
• Even lists, sets, sorted sets and maps are composed of strings
Tuesday, January 25, 2011
![Page 26: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/26.jpg)
Simple dynamic string (SDS)
• Special structure
• buff – a character array that stores the string
• len – a long type that stores the length of the buff array
• free – number of additional bytes available for use
Tuesday, January 25, 2011
![Page 27: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/27.jpg)
Write to disk
• Everything resides in primary memory till its written to disk
• does not use mmap files
Tuesday, January 25, 2011
![Page 28: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/28.jpg)
Why not memory mapped files?
• http://code.google.com/p/redis/wiki/VirtualMemorySpecification
• http://antirez.com/post/redis-virtual-memory-story.html
• swap pages and redis object don’t map one to one
• format in memory and disk are not same. Disk formats are compressed.
Tuesday, January 25, 2011
![Page 29: The Wonders of Redis key value store Series - Day 2 - Distributed... · The Wonders of Redis key !value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryoÞdeas.com](https://reader034.vdocuments.net/reader034/viewer/2022042802/5f426c5deed2fd1b192ea5c9/html5/thumbnails/29.jpg)
Master-slave
• Slave connects and sends SYNC command
• All database and commands relayed from master to slave
• For replication slave config -- slaveof <master ip> 6379
Tuesday, January 25, 2011