![Page 1: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/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... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/2.jpg)
What’s Redis?
• open source key-value store
• a data structure server
• values in key-value pairs can be strings, hashes, lists, sets, sorted sets
Tuesday, January 25, 2011
![Page 3: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/3.jpg)
Where to find it?
• redis.io
• download a copy from http://redis.io/download
Tuesday, January 25, 2011
![Page 4: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/4.jpg)
Who is building it?
• Core developers
• Salvatore Sanfilippo, twitter: @antirez
• Pieter Noordhuis, twitter: @pnoordhuis
• Main sponsor
• VMware
Tuesday, January 25, 2011
![Page 5: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/5.jpg)
Written in
• ANSI C
• runs on POSIX compliant systems with no external dependencies
Tuesday, January 25, 2011
![Page 6: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/6.jpg)
How can it be used?
• as an in memory data store
• with option to persist to disk
• in standalone mode or as a master-slave replicated set
• Redis cluster -- coming soon! (June 2011)
• as cache
Tuesday, January 25, 2011
![Page 7: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/7.jpg)
Redis Architecture
Tuesday, January 25, 2011
![Page 8: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/8.jpg)
Download and install
• curl -O http://redis.googlecode.com/files/redis-2.2.0-rc4.tar.gz
(just a 436kb download)
• tar zxvf redis-2.2.0-rc4.tar.gz
• cd redis-2.2.0-rc4
• make & make install (installs in /usr/local/bin)
• make test (to be sure you install it correctly)
Tuesday, January 25, 2011
![Page 9: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/9.jpg)
Start the redis-server
• /usr/local/bin/redis-server
...Server started, Redis version 2.1.12
...The server is now ready to accept connections on port 6379
Tuesday, January 25, 2011
![Page 10: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/10.jpg)
Connect with redis-cli
• /usr/local/bin/redis-cli
redis> set key1 val1
OK
redis> get key1
"val1"
Tuesday, January 25, 2011
![Page 11: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/11.jpg)
String key-value pairs
• like memcached
• with persistence
• key and value -- binary-safe strings
Tuesday, January 25, 2011
![Page 12: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/12.jpg)
Binary-safe?
redis> set "a key _" "another value"OK
redis> get "a key _""another value"
Tuesday, January 25, 2011
![Page 13: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/13.jpg)
Binary-safe? (...cont)
redis> set "a key \n" "a value"OK
redis> get "a key \n""a value"
Tuesday, January 25, 2011
![Page 14: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/14.jpg)
String Commands
Tuesday, January 25, 2011
![Page 15: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/15.jpg)
String cmd: GETSET
• You have already seen SET and GET
redis> getset k1 v2
"v1"
redis> get k1
"v2"
Tuesday, January 25, 2011
![Page 16: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/16.jpg)
String cmd: STRLEN
redis> get "a key _"
"another value"
redis> strlen "a key _"
(integer) 14
redis> strlen nonexistent_key
(integer) 0
Tuesday, January 25, 2011
![Page 17: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/17.jpg)
String cmd: GETRANGE
redis> get "a key _"
"another value"
redis> getrange "a key _" 0 4
"anoth"
redis> getrange "a key _" 0 -1
"another value"
Tuesday, January 25, 2011
![Page 18: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/18.jpg)
String cmd: APPEND
redis> append k3 "value"
(integer) 5
redis> append k3 "a "
(integer) 7
redis> get k3
"valuea "
Tuesday, January 25, 2011
![Page 19: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/19.jpg)
String cmd: MGET
redis> mget k1 k2 k3
1) "v2"
2) "a value \"
3) "valuea "
Tuesday, January 25, 2011
![Page 20: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/20.jpg)
String cmd: MSET
redis> mset key1 val1 key2 val2
OK
redis> get key1
"val1"
redis> get key2
"val2"
Tuesday, January 25, 2011
![Page 21: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/21.jpg)
String cmd: SETNX(set if key does not exist)
redis> setnx key3 val3(integer) 1
redis> get key3
"val3"
redis> setnx key2 newval2(integer) 0
redis> get key2
"val2"
Tuesday, January 25, 2011
![Page 22: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/22.jpg)
String cmd: MSETNX(does nothing if even one key already exists)
redis> msetnx key3 newval3 key4 val4
(integer) 0
redis> get key3
"val3"
redis> get key4
(nil)
Tuesday, January 25, 2011
![Page 23: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/23.jpg)
String cmd: SETEX(set key value and set key timeout)
redis> setex key_w_timeout 15 aVal
OK
redis> get key_w_timeout
"aVal"
redis> ttl key_w_timeout
(integer) 15 (this value will vary depending on when you run it)
Tuesday, January 25, 2011
![Page 24: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/24.jpg)
String cmd: SETRANGE redis> set key_1 "What's NoSQL?"OK
redis> get key_1
"What's NoSQL?"
redis> setrange key_1 7 "a key-value store?"(integer) 25
redis> get key_1
"What's a key-value store?"
Tuesday, January 25, 2011
![Page 25: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/25.jpg)
String cmd: GETBIT(bit value stored at offset)
redis> get key_1
"What's a key-value store?"
redis> getbit key_1 8
(integer) 0
redis> getbit key_1 9
(integer) 1
Tuesday, January 25, 2011
![Page 26: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/26.jpg)
String cmd: SETBIT
redis> setbit key_1 8 1
(integer) 0
redis> getbit key_1 8
(integer) 1
Tuesday, January 25, 2011
![Page 27: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/27.jpg)
String (int) cmd: INCR
redis> set count 10
OK
redis> incr count
(integer) 11
redis> get count
"11"
Tuesday, January 25, 2011
![Page 28: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/28.jpg)
String (int) cmd: INCRBY
redis> set count 10
OK
redis> incrby count 5
(integer) 15
redis> get count
"15"
Tuesday, January 25, 2011
![Page 29: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/29.jpg)
String (int) cmd: DECR
redis> set count 10
OK
redis> decr count
(integer) 9
redis> get count
"9"
Tuesday, January 25, 2011
![Page 30: The Wonders of Redis key value store Series - Day 2 - Distributed... · WhatÕs Redis? ¥ open source key !value store ¥ a data structure server ¥ values in key !value pairs can](https://reader033.vdocuments.mx/reader033/viewer/2022050103/5f426c5beed2fd1b192ea5c0/html5/thumbnails/30.jpg)
String (int) cmd: DECRBY
redis> set count 10
OK
redis> decrby count 2
(integer) 8
redis> get count
"8"
Tuesday, January 25, 2011