30
The Wonders of Redis key- value store Shashank Tiwari blog: shanky.org | twitter: @tshanky st@treasuryofideas.com Tuesday, January 25, 2011

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

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

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

The Wonders of Redis key-value store

Shashank Tiwariblog: shanky.org | twitter: @tshanky

[email protected]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

String (int) cmd: DECRBY

redis> set count 10

OK

redis> decrby count 2

(integer) 8

redis> get count

"8"

Tuesday, January 25, 2011