redis: an introduction

15
An introduction March 2014 – Septeni Technology [email protected]

Upload: dang-thao

Post on 10-Jul-2015

282 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Redis: An introduction

An introduction

March 2014 – Septeni Technology

[email protected]

Page 2: Redis: An introduction

Over view

• Memcache-ish in-memory key/value store

• But values are complex data types:o blobs

o lists

o sets

o sorted sets

o hash tables

• And it has persistence.

• Open source; very helpful and friendly community.

• Used in the real world: pinterest, github, craigslist, bit.ly, engineyard...

Page 3: Redis: An introduction

Key Features and Cool Stuff

• Speed

• Master/Slave Replication

• All data is eventually persistent

• Handles huge workloads easily

• Variety of Supported Languages

• Support for atomic operations, transactions

• Has pub/sub functionality

• Sharding

Page 4: Redis: An introduction

List operations

• Lists are your ordinary linked lists.

• You can push and pop at both sides, extract range, resize..

• Random access

• BLPOP: Blocking POP - wait until a list has elements and pop

them. Useful for realtime stuff.

Page 5: Redis: An introduction

Set operations

• Sets are an unordered collection of Strings

• Sets can be intersected/diffed /union'ed server side.

• Can be useful as keys when building complex schemata.

Page 6: Redis: An introduction

Sorted Sets• Same as sets, but with score per element

• Ranked ranges, aggregation of scores on INTERSECT

• Can be used as ordered keys in complex schemata

• Think timestamps, inverted index, geohashing, ip ranges

Page 7: Redis: An introduction

Hashes

• Hash tables as values

• Think of an object store with atomic access to object

• Members

Page 8: Redis: An introduction

PubSub - Publish/Subscribe

• Clients can subscribe to channels or patterns and receive

• Notifications when messages are sent to channels.

• Use cases: chats, notifycation, real-time applications..

Page 9: Redis: An introduction

Common Web Use Cases Solved in Redis

Page 10: Redis: An introduction

Show latest items listings in your home page

This is a live in-memory cache and is very fast. LPUSH isused to insert a content ID at the head of the list storedat a key. LTRIM is used to limit the number of items inthe list to 5000. If the user needs to page beyond thiscache only then are they sent to the database.

Page 11: Redis: An introduction

Leaderboards and related problems

A leader board is a set sorted by score. The ZADDcommands implements this directly and theZREVRANGE command can be used to get the top 100users by score and ZRANK can be used to get a usersrank. Very direct and easy.

Page 12: Redis: An introduction

Counting stuff

Keeping stats of all kinds iscommon, say you want to knowwhen to block an IP addresss. TheINCRBY command makes it easy toatomically keep counters; GETSETto atomically clear the counter; theexpire attribute can be used to tellwhen an key should be deleted.

Page 13: Redis: An introduction

Caching

Page 14: Redis: An introduction

Discussion

Page 15: Redis: An introduction

Thank you.