SlideShare a Scribd company logo
1 of 16
Download to read offline
Redis for serious Social Media
         Performance

      Chris Mordue @cmordue
           March 22, 2012
Outline

     What is Redis and what can you really do with it?
 ●
     Data structures
 ●
     Command processing
 ●
     Persistence
 ●
     Recipes
 ●
     Redis roadmap
 ●
What is Redis

Many things to many people:
     Cache (Memcache replacement)
 ●
     Queueing or Pub/Sub system
 ●
     Data structure server
 ●
     Advanced Key/Value Store
 ●
What isn't it?
    Solution to everything
 ●
    Easily scalable across
 ●
    Object/Graph/Relational DB
 ●
        although many structures can be modeled
      ○
Author
    Salvatore - sponsored by VMware
 ●
Use cases
●   Memcached replacement              Autocomplete




                                   ●
●   Duplicate detector                 Twitter




                                   ●
●   FIFO/LIFO Queue                    digg / Hacker News




                                   ●
●   Priority Queue                     Social activity feed




                                   ●
●   Distributed hashmap
    ○ e.g. url shortener
●   UID generator
●   Game high scores
●   Geolocation lookup
    ○ lat & long -> city
●   Real-time analytics
●   Metrics DB
●   API throttling (rate-limits)
Data structures

Types:
     Strings (regular or bitmap)
 ●
          get/set (& not exist), setbit/getbit, incr[by]/decr[by], append
       ○
     Lists
 ●
          push/pop, set, trim, len, range, blocking/non-blocking
       ○
     Hashsets
 ●
          get/set, incrby, exists, del, keys, vals, getall
       ○
     Sets
 ●
          add/rem, pop, diff/union/inter (& store), move
       ○
●    SortedSets
      ○ add/rem, rank, range/revrange, interstore/unionstore
Command processing

Execution Basics
●   IO of requests/responses on other thread(s)
●   Commands are processed in serial in a single thread
     ○ If you want to use more CPUs, shard your data client-side
●   Superfast processing of commands
Command groups
●   Request/response
●   Pipelined: Several requests / responses
●   Transactions:
     ○   Traditional: Several requests processed in order atomically
     ○   Check-And-Set: Request(s), data manipulation in client, more
         requests
●   Scripts (v2.6): execute client-defined Lua scripts in the server for
    more complex actions
Persistence

Periodic Snapshots
Append Only File
Recipes - UID Generator
Objective: Create unique ids
Implementation*:
 ● incr global:nextDocId
 ● The response is a unique id
Performance: >100.000/s
* from http://redis.io/commands/incr
Recipes - Duplicate Detector
Objective: Determine if an object has already been processed
Implementation:
 ● sadd <objectId>
 ● If the response is 1, it's new. If 0, it already existed
Gotchas:
 ● use lru eviction rules to remove old data to keep the data size contained
Examples:
 ● Socialmetrix's twitter-engine
Recipes - Memcached
Objective: Application cache
Implementation:
    serialize your objects as a string
  ●
    get/set
  ●
    expire (time to live)
  ●
Performance >= memcache
Gotchas:
    Memcache scales horizontally out of the box, redis does not
  ●
Examples:
    Integration with Play! Framework's Cache:
  ●
            http://www.playframework.org/modules/redis
        ○
            https://github.com/tkral/play-redis
        ○
      Garantia Data: providing hosted redis/memcached instances
  ●
            http://www.garantiadata.com/
        ○
Image from http://www.garantiadata.com/
Recipes - API Rate Limiter
Objective: Recognize when more than E events happen in time T seconds by
user U.
Implementation 1*:                Implementation 2:
FUNCTION LIMIT_API_CALL(ip)                FUNCTION LIMIT_API_CALL(ip)
ts = CURRENT_UNIX_TIME()                   ts = CURRENT_UNIX_TIME()
keyname = ip+":"+ts                        keyname = ip+":"+ts
current = GET(keyname)                     MULTI
                                              current = INCR(keyname, 1)
IF current != NULL AND current > 10 THEN
                                              EXPIRE(keyname,10)
   ERROR "too many requests per second"    EXEC
ELSE                                       IF current < 10 THEN
   MULTI                                      PERFORM_API_CALL()
      INCR(keyname,1)                      ELSE
      EXPIRE(keyname,10)                      ERROR "too many requests per second"
                                           END
   EXEC
   PERFORM_API_CALL()
END

Gotchas:
 ● make sure you set expires on the keys in a transaction because set or incr
    removes old expires values
Examples:
* from:http://redis.io/commands/incr
Recipes - Twitter clone
Objective: Duplicate the functionality of twitter
Implementation:
 ● Generate Ids with String: INCR global:nextUserId => 1000
Username to id with String: SET username:antirez:uid 1000
 ● Followers/Follwings with 2 sets: uid:1000:followers
 ● Timeline with List: uid:1000:posts
 ● Tweeting:
     ○ Create tweet id with String: INCR global:nextPostId => 10343
     ○ Store tweet: SET post:10343 "$owner_id|$time|Having fun w/ Retwis"
     ○ Get Followers list and push tweetId to allow followers timelines:
         ■ LPUSH uid:$followeruid:posts 10343
 ● View posts:
     ○ Get list of postIds: LRANGE uid:1000:posts 0 50
     ○ For each postId, get posts to display: GET post:$postId
From:
 ●   http://redis.io/topics/twitter-clone
Recipes - Twitter clone cont.

Code:
 ●   https://github.com/SpringSource/spring-data-keyvalue-examples
 ●   http://retwis.antirez.com/
 ●   http://code.google.com/p/redis/downloads/list
Performance:
"On a very slow and loaded server, apache benchmark with 100 parallel clients
issuing 100000 requests measured the average pageview to take 5
milliseconds. This means you can serve millions of users every day with just a
single Linux box, and this one was monkey asses slow!" - Salvatore
Redis roadmap

v2.6:
   Server side scripting with Lua (v5.1): http://www.lua.org/manual/5.1/
  ●
Lots of possibilities with scripts - invent your own
commands
v3.0:
 ● Cluster support
 ● In dev for many months
Other Recipes
Old cookbook (soon to be updated): http://rediscookbook.org/
GeoHashing: https://github.com/doat/geodis
Autocomplete: http://patshaughnessy.net/2011/11/29/two-ways-of-using-redis-
to-build-a-nosql-autocomplete-search-index
Slides 17-20: http://www.slideshare.net/dvirsky/introduction-to-redis-version-2
Digg clone design: http://groups.google.com/group/redis-
db/browse_thread/thread/94d0dd1a24bf400e/98a0f5935380a075?
lnk=gst&q=digg#98a0f5935380a075
Lots of other recipes: http://groups.google.com/group/redis-db

Sinatra dashboard for redis: https://github.com/steelThread/redmon
¡Gracias!
 Chris Mordue
Software Architect
   @cmordue

More Related Content

What's hot

Getting Started with MongoDB
Getting Started with MongoDBGetting Started with MongoDB
Getting Started with MongoDBMichael Redlich
 
Hydra - Getting Started
Hydra - Getting StartedHydra - Getting Started
Hydra - Getting Startedabramsm
 
Redis and its many use cases
Redis and its many use casesRedis and its many use cases
Redis and its many use casesChristian Joudrey
 
Node.js - A practical introduction (v2)
Node.js  - A practical introduction (v2)Node.js  - A practical introduction (v2)
Node.js - A practical introduction (v2)Felix Geisendörfer
 
MongoDB: How it Works
MongoDB: How it WorksMongoDB: How it Works
MongoDB: How it WorksMike Dirolf
 
Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?Felix Geisendörfer
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisKnoldus Inc.
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevFelix Geisendörfer
 
并发模型介绍
并发模型介绍并发模型介绍
并发模型介绍qiang
 
杨卫华:微博cache设计浅谈
杨卫华:微博cache设计浅谈杨卫华:微博cache设计浅谈
杨卫华:微博cache设计浅谈Leechael
 
Redis SoCraTes 2014
Redis SoCraTes 2014Redis SoCraTes 2014
Redis SoCraTes 2014steffenbauer
 
EuroPython 2016 : A Deep Dive into the Pymongo Driver
EuroPython 2016 : A Deep Dive into the Pymongo DriverEuroPython 2016 : A Deep Dive into the Pymongo Driver
EuroPython 2016 : A Deep Dive into the Pymongo DriverJoe Drumgoole
 

What's hot (20)

Getting Started with MongoDB
Getting Started with MongoDBGetting Started with MongoDB
Getting Started with MongoDB
 
Hydra - Getting Started
Hydra - Getting StartedHydra - Getting Started
Hydra - Getting Started
 
Redis and its many use cases
Redis and its many use casesRedis and its many use cases
Redis and its many use cases
 
Node.js - A practical introduction (v2)
Node.js  - A practical introduction (v2)Node.js  - A practical introduction (v2)
Node.js - A practical introduction (v2)
 
MongoDB: How it Works
MongoDB: How it WorksMongoDB: How it Works
MongoDB: How it Works
 
Node.js - As a networking tool
Node.js - As a networking toolNode.js - As a networking tool
Node.js - As a networking tool
 
Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?
 
Openstack 簡介
Openstack 簡介Openstack 簡介
Openstack 簡介
 
Nodejs - A-quick-tour-v3
Nodejs - A-quick-tour-v3Nodejs - A-quick-tour-v3
Nodejs - A-quick-tour-v3
 
Nodejs - A quick tour (v5)
Nodejs - A quick tour (v5)Nodejs - A quick tour (v5)
Nodejs - A quick tour (v5)
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)
 
Node.js in production
Node.js in productionNode.js in production
Node.js in production
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredev
 
Nodejs - A quick tour (v4)
Nodejs - A quick tour (v4)Nodejs - A quick tour (v4)
Nodejs - A quick tour (v4)
 
并发模型介绍
并发模型介绍并发模型介绍
并发模型介绍
 
杨卫华:微博cache设计浅谈
杨卫华:微博cache设计浅谈杨卫华:微博cache设计浅谈
杨卫华:微博cache设计浅谈
 
Mongodb workshop
Mongodb workshopMongodb workshop
Mongodb workshop
 
Redis SoCraTes 2014
Redis SoCraTes 2014Redis SoCraTes 2014
Redis SoCraTes 2014
 
EuroPython 2016 : A Deep Dive into the Pymongo Driver
EuroPython 2016 : A Deep Dive into the Pymongo DriverEuroPython 2016 : A Deep Dive into the Pymongo Driver
EuroPython 2016 : A Deep Dive into the Pymongo Driver
 

Viewers also liked

RICON 2014 - Build a Cloud Day - Crash Course Open Source Cloud Computing
RICON 2014 - Build a Cloud Day - Crash Course Open Source Cloud ComputingRICON 2014 - Build a Cloud Day - Crash Course Open Source Cloud Computing
RICON 2014 - Build a Cloud Day - Crash Course Open Source Cloud ComputingMark Hinkle
 
IDC corporate overview slides
IDC corporate overview slidesIDC corporate overview slides
IDC corporate overview slidesIDC Research Inc.
 
Startup ideas worth Exloring in 2010
Startup ideas worth Exloring in 2010Startup ideas worth Exloring in 2010
Startup ideas worth Exloring in 2010lynnks
 
Honeycon2014: Mining IoCs from Honeypot data feeds
Honeycon2014: Mining IoCs from Honeypot data feedsHoneycon2014: Mining IoCs from Honeypot data feeds
Honeycon2014: Mining IoCs from Honeypot data feedsF _
 
RSA Incident Response Threat Emerging Threat Profile: Shell_Crew
 RSA Incident Response Threat Emerging Threat Profile: Shell_Crew RSA Incident Response Threat Emerging Threat Profile: Shell_Crew
RSA Incident Response Threat Emerging Threat Profile: Shell_CrewEMC
 
MS CS - Selecting Machine Learning Algorithm
MS CS - Selecting Machine Learning AlgorithmMS CS - Selecting Machine Learning Algorithm
MS CS - Selecting Machine Learning AlgorithmKaniska Mandal
 
SCA Sydney Radio Stations Lead by Engagement - September 2014
SCA Sydney Radio Stations Lead by Engagement - September 2014SCA Sydney Radio Stations Lead by Engagement - September 2014
SCA Sydney Radio Stations Lead by Engagement - September 2014Southern Cross Austereo
 
Reverse engineering android apps
Reverse engineering android appsReverse engineering android apps
Reverse engineering android appsPranay Airan
 
23k guestbooks mix
23k guestbooks mix23k guestbooks mix
23k guestbooks mixWaleed Ahmad
 
Lean Analytics for Intrapreneurs (Lean Startup Conf 2013)
Lean Analytics for Intrapreneurs (Lean Startup Conf 2013)Lean Analytics for Intrapreneurs (Lean Startup Conf 2013)
Lean Analytics for Intrapreneurs (Lean Startup Conf 2013)Lean Analytics
 
Carat's 10 Trends for 2017
Carat's 10 Trends for 2017Carat's 10 Trends for 2017
Carat's 10 Trends for 2017dentsu
 

Viewers also liked (12)

RICON 2014 - Build a Cloud Day - Crash Course Open Source Cloud Computing
RICON 2014 - Build a Cloud Day - Crash Course Open Source Cloud ComputingRICON 2014 - Build a Cloud Day - Crash Course Open Source Cloud Computing
RICON 2014 - Build a Cloud Day - Crash Course Open Source Cloud Computing
 
IDC corporate overview slides
IDC corporate overview slidesIDC corporate overview slides
IDC corporate overview slides
 
Startup ideas worth Exloring in 2010
Startup ideas worth Exloring in 2010Startup ideas worth Exloring in 2010
Startup ideas worth Exloring in 2010
 
Smart Sourcing in China
Smart Sourcing in ChinaSmart Sourcing in China
Smart Sourcing in China
 
Honeycon2014: Mining IoCs from Honeypot data feeds
Honeycon2014: Mining IoCs from Honeypot data feedsHoneycon2014: Mining IoCs from Honeypot data feeds
Honeycon2014: Mining IoCs from Honeypot data feeds
 
RSA Incident Response Threat Emerging Threat Profile: Shell_Crew
 RSA Incident Response Threat Emerging Threat Profile: Shell_Crew RSA Incident Response Threat Emerging Threat Profile: Shell_Crew
RSA Incident Response Threat Emerging Threat Profile: Shell_Crew
 
MS CS - Selecting Machine Learning Algorithm
MS CS - Selecting Machine Learning AlgorithmMS CS - Selecting Machine Learning Algorithm
MS CS - Selecting Machine Learning Algorithm
 
SCA Sydney Radio Stations Lead by Engagement - September 2014
SCA Sydney Radio Stations Lead by Engagement - September 2014SCA Sydney Radio Stations Lead by Engagement - September 2014
SCA Sydney Radio Stations Lead by Engagement - September 2014
 
Reverse engineering android apps
Reverse engineering android appsReverse engineering android apps
Reverse engineering android apps
 
23k guestbooks mix
23k guestbooks mix23k guestbooks mix
23k guestbooks mix
 
Lean Analytics for Intrapreneurs (Lean Startup Conf 2013)
Lean Analytics for Intrapreneurs (Lean Startup Conf 2013)Lean Analytics for Intrapreneurs (Lean Startup Conf 2013)
Lean Analytics for Intrapreneurs (Lean Startup Conf 2013)
 
Carat's 10 Trends for 2017
Carat's 10 Trends for 2017Carat's 10 Trends for 2017
Carat's 10 Trends for 2017
 

Similar to Redis

"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr VronskiyFwdays
 
202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUP202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUPRonald Hsu
 
Building and Scaling Node.js Applications
Building and Scaling Node.js ApplicationsBuilding and Scaling Node.js Applications
Building and Scaling Node.js ApplicationsOhad Kravchick
 
RedisConf18 - Writing modular & encapsulated Redis code
RedisConf18 - Writing modular & encapsulated Redis codeRedisConf18 - Writing modular & encapsulated Redis code
RedisConf18 - Writing modular & encapsulated Redis codeRedis Labs
 
Work Stealing For Fun & Profit: Jim Nelson
Work Stealing For Fun & Profit: Jim NelsonWork Stealing For Fun & Profit: Jim Nelson
Work Stealing For Fun & Profit: Jim NelsonRedis Labs
 
Metarhia: Node.js Macht Frei
Metarhia: Node.js Macht FreiMetarhia: Node.js Macht Frei
Metarhia: Node.js Macht FreiTimur Shemsedinov
 
How to make a high-quality Node.js app, Nikita Galkin
How to make a high-quality Node.js app, Nikita GalkinHow to make a high-quality Node.js app, Nikita Galkin
How to make a high-quality Node.js app, Nikita GalkinSigma Software
 
Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog
 Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog
Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDogRedis Labs
 
Application Monitoring using Open Source: VictoriaMetrics - ClickHouse
Application Monitoring using Open Source: VictoriaMetrics - ClickHouseApplication Monitoring using Open Source: VictoriaMetrics - ClickHouse
Application Monitoring using Open Source: VictoriaMetrics - ClickHouseVictoriaMetrics
 
Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...
Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...
Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...Altinity Ltd
 
DevOops & How I hacked you DevopsDays DC June 2015
DevOops & How I hacked you DevopsDays DC June 2015DevOops & How I hacked you DevopsDays DC June 2015
DevOops & How I hacked you DevopsDays DC June 2015Chris Gates
 
PostgreSQL and Redis - talk at pgcon 2013
PostgreSQL and Redis - talk at pgcon 2013PostgreSQL and Redis - talk at pgcon 2013
PostgreSQL and Redis - talk at pgcon 2013Andrew Dunstan
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoopclairvoyantllc
 
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander ZaitsevMigration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander ZaitsevAltinity Ltd
 
Faster Drupal sites using Queue API
Faster Drupal sites using Queue APIFaster Drupal sites using Queue API
Faster Drupal sites using Queue APIOSInet
 
Dragoncraft Architectural Overview
Dragoncraft Architectural OverviewDragoncraft Architectural Overview
Dragoncraft Architectural Overviewjessesanford
 
How to use the new Domino Query Language
How to use the new Domino Query LanguageHow to use the new Domino Query Language
How to use the new Domino Query LanguageTim Davis
 
Clug 2012 March web server optimisation
Clug 2012 March   web server optimisationClug 2012 March   web server optimisation
Clug 2012 March web server optimisationgrooverdan
 
Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理Sadayuki Furuhashi
 

Similar to Redis (20)

"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy
 
202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUP202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUP
 
Building and Scaling Node.js Applications
Building and Scaling Node.js ApplicationsBuilding and Scaling Node.js Applications
Building and Scaling Node.js Applications
 
RedisConf18 - Writing modular & encapsulated Redis code
RedisConf18 - Writing modular & encapsulated Redis codeRedisConf18 - Writing modular & encapsulated Redis code
RedisConf18 - Writing modular & encapsulated Redis code
 
Work Stealing For Fun & Profit: Jim Nelson
Work Stealing For Fun & Profit: Jim NelsonWork Stealing For Fun & Profit: Jim Nelson
Work Stealing For Fun & Profit: Jim Nelson
 
Metarhia: Node.js Macht Frei
Metarhia: Node.js Macht FreiMetarhia: Node.js Macht Frei
Metarhia: Node.js Macht Frei
 
How to make a high-quality Node.js app, Nikita Galkin
How to make a high-quality Node.js app, Nikita GalkinHow to make a high-quality Node.js app, Nikita Galkin
How to make a high-quality Node.js app, Nikita Galkin
 
Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog
 Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog
Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog
 
Application Monitoring using Open Source: VictoriaMetrics - ClickHouse
Application Monitoring using Open Source: VictoriaMetrics - ClickHouseApplication Monitoring using Open Source: VictoriaMetrics - ClickHouse
Application Monitoring using Open Source: VictoriaMetrics - ClickHouse
 
Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...
Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...
Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...
 
DevOops & How I hacked you DevopsDays DC June 2015
DevOops & How I hacked you DevopsDays DC June 2015DevOops & How I hacked you DevopsDays DC June 2015
DevOops & How I hacked you DevopsDays DC June 2015
 
PostgreSQL and Redis - talk at pgcon 2013
PostgreSQL and Redis - talk at pgcon 2013PostgreSQL and Redis - talk at pgcon 2013
PostgreSQL and Redis - talk at pgcon 2013
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoop
 
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander ZaitsevMigration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
 
Faster Drupal sites using Queue API
Faster Drupal sites using Queue APIFaster Drupal sites using Queue API
Faster Drupal sites using Queue API
 
Dragoncraft Architectural Overview
Dragoncraft Architectural OverviewDragoncraft Architectural Overview
Dragoncraft Architectural Overview
 
Mini-Training: Redis
Mini-Training: RedisMini-Training: Redis
Mini-Training: Redis
 
How to use the new Domino Query Language
How to use the new Domino Query LanguageHow to use the new Domino Query Language
How to use the new Domino Query Language
 
Clug 2012 March web server optimisation
Clug 2012 March   web server optimisationClug 2012 March   web server optimisation
Clug 2012 March web server optimisation
 
Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理
 

More from Socialmetrix

7 Disparadores de Engagement para o mercado de consumo massivo
7 Disparadores de Engagement para o mercado de consumo massivo7 Disparadores de Engagement para o mercado de consumo massivo
7 Disparadores de Engagement para o mercado de consumo massivoSocialmetrix
 
The Ultimate Guide to using Social Media Media Analytics
The Ultimate Guide to using Social Media Media AnalyticsThe Ultimate Guide to using Social Media Media Analytics
The Ultimate Guide to using Social Media Media AnalyticsSocialmetrix
 
Social Media is no longer something relevant just for the area of Marketing. ...
Social Media is no longer something relevant just for the area of Marketing. ...Social Media is no longer something relevant just for the area of Marketing. ...
Social Media is no longer something relevant just for the area of Marketing. ...Socialmetrix
 
How to Create a Successful Social Media Campaign
How to Create a Successful Social Media CampaignHow to Create a Successful Social Media Campaign
How to Create a Successful Social Media CampaignSocialmetrix
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?Socialmetrix
 
AWS re:Invent 2014 | (ARC202) Real-World Real-Time Analytics
AWS re:Invent 2014 | (ARC202) Real-World Real-Time AnalyticsAWS re:Invent 2014 | (ARC202) Real-World Real-Time Analytics
AWS re:Invent 2014 | (ARC202) Real-World Real-Time AnalyticsSocialmetrix
 
Tutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeTutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeSocialmetrix
 
Introducción a Apache Spark a través de un caso de uso cotidiano
Introducción a Apache Spark a través de un caso de uso cotidianoIntroducción a Apache Spark a través de un caso de uso cotidiano
Introducción a Apache Spark a través de un caso de uso cotidianoSocialmetrix
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Socialmetrix
 
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Socialmetrix
 
Introducción a Apache Spark
Introducción a Apache SparkIntroducción a Apache Spark
Introducción a Apache SparkSocialmetrix
 
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...Socialmetrix
 
14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais
14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais
14º Encontro Locaweb - Evolução das Plataformas para Métricas SociaisSocialmetrix
 
Jugar Introduccion a Scala
Jugar Introduccion a ScalaJugar Introduccion a Scala
Jugar Introduccion a ScalaSocialmetrix
 
Endeavor – métricas em mídias sociais
Endeavor – métricas em mídias sociaisEndeavor – métricas em mídias sociais
Endeavor – métricas em mídias sociaisSocialmetrix
 
MongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en NubeMongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en NubeSocialmetrix
 

More from Socialmetrix (17)

7 Disparadores de Engagement para o mercado de consumo massivo
7 Disparadores de Engagement para o mercado de consumo massivo7 Disparadores de Engagement para o mercado de consumo massivo
7 Disparadores de Engagement para o mercado de consumo massivo
 
The Ultimate Guide to using Social Media Media Analytics
The Ultimate Guide to using Social Media Media AnalyticsThe Ultimate Guide to using Social Media Media Analytics
The Ultimate Guide to using Social Media Media Analytics
 
Social Media is no longer something relevant just for the area of Marketing. ...
Social Media is no longer something relevant just for the area of Marketing. ...Social Media is no longer something relevant just for the area of Marketing. ...
Social Media is no longer something relevant just for the area of Marketing. ...
 
How to Create a Successful Social Media Campaign
How to Create a Successful Social Media CampaignHow to Create a Successful Social Media Campaign
How to Create a Successful Social Media Campaign
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?
 
AWS re:Invent 2014 | (ARC202) Real-World Real-Time Analytics
AWS re:Invent 2014 | (ARC202) Real-World Real-Time AnalyticsAWS re:Invent 2014 | (ARC202) Real-World Real-Time Analytics
AWS re:Invent 2014 | (ARC202) Real-World Real-Time Analytics
 
Tutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeTutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtime
 
Introducción a Apache Spark a través de un caso de uso cotidiano
Introducción a Apache Spark a través de un caso de uso cotidianoIntroducción a Apache Spark a través de un caso de uso cotidiano
Introducción a Apache Spark a través de un caso de uso cotidiano
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
 
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
 
Introducción a Apache Spark
Introducción a Apache SparkIntroducción a Apache Spark
Introducción a Apache Spark
 
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...
 
14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais
14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais
14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais
 
Call2Social
Call2SocialCall2Social
Call2Social
 
Jugar Introduccion a Scala
Jugar Introduccion a ScalaJugar Introduccion a Scala
Jugar Introduccion a Scala
 
Endeavor – métricas em mídias sociais
Endeavor – métricas em mídias sociaisEndeavor – métricas em mídias sociais
Endeavor – métricas em mídias sociais
 
MongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en NubeMongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en Nube
 

Recently uploaded

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Visualising and forecasting stocks using Dash
Visualising and forecasting stocks using DashVisualising and forecasting stocks using Dash
Visualising and forecasting stocks using Dashnarutouzumaki53779
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Recently uploaded (20)

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Visualising and forecasting stocks using Dash
Visualising and forecasting stocks using DashVisualising and forecasting stocks using Dash
Visualising and forecasting stocks using Dash
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

Redis

  • 1. Redis for serious Social Media Performance Chris Mordue @cmordue March 22, 2012
  • 2. Outline What is Redis and what can you really do with it? ● Data structures ● Command processing ● Persistence ● Recipes ● Redis roadmap ●
  • 3. What is Redis Many things to many people: Cache (Memcache replacement) ● Queueing or Pub/Sub system ● Data structure server ● Advanced Key/Value Store ● What isn't it? Solution to everything ● Easily scalable across ● Object/Graph/Relational DB ● although many structures can be modeled ○ Author Salvatore - sponsored by VMware ●
  • 4. Use cases ● Memcached replacement Autocomplete ● ● Duplicate detector Twitter ● ● FIFO/LIFO Queue digg / Hacker News ● ● Priority Queue Social activity feed ● ● Distributed hashmap ○ e.g. url shortener ● UID generator ● Game high scores ● Geolocation lookup ○ lat & long -> city ● Real-time analytics ● Metrics DB ● API throttling (rate-limits)
  • 5. Data structures Types: Strings (regular or bitmap) ● get/set (& not exist), setbit/getbit, incr[by]/decr[by], append ○ Lists ● push/pop, set, trim, len, range, blocking/non-blocking ○ Hashsets ● get/set, incrby, exists, del, keys, vals, getall ○ Sets ● add/rem, pop, diff/union/inter (& store), move ○ ● SortedSets ○ add/rem, rank, range/revrange, interstore/unionstore
  • 6. Command processing Execution Basics ● IO of requests/responses on other thread(s) ● Commands are processed in serial in a single thread ○ If you want to use more CPUs, shard your data client-side ● Superfast processing of commands Command groups ● Request/response ● Pipelined: Several requests / responses ● Transactions: ○ Traditional: Several requests processed in order atomically ○ Check-And-Set: Request(s), data manipulation in client, more requests ● Scripts (v2.6): execute client-defined Lua scripts in the server for more complex actions
  • 8. Recipes - UID Generator Objective: Create unique ids Implementation*: ● incr global:nextDocId ● The response is a unique id Performance: >100.000/s * from http://redis.io/commands/incr
  • 9. Recipes - Duplicate Detector Objective: Determine if an object has already been processed Implementation: ● sadd <objectId> ● If the response is 1, it's new. If 0, it already existed Gotchas: ● use lru eviction rules to remove old data to keep the data size contained Examples: ● Socialmetrix's twitter-engine
  • 10. Recipes - Memcached Objective: Application cache Implementation: serialize your objects as a string ● get/set ● expire (time to live) ● Performance >= memcache Gotchas: Memcache scales horizontally out of the box, redis does not ● Examples: Integration with Play! Framework's Cache: ● http://www.playframework.org/modules/redis ○ https://github.com/tkral/play-redis ○ Garantia Data: providing hosted redis/memcached instances ● http://www.garantiadata.com/ ○ Image from http://www.garantiadata.com/
  • 11. Recipes - API Rate Limiter Objective: Recognize when more than E events happen in time T seconds by user U. Implementation 1*: Implementation 2: FUNCTION LIMIT_API_CALL(ip) FUNCTION LIMIT_API_CALL(ip) ts = CURRENT_UNIX_TIME() ts = CURRENT_UNIX_TIME() keyname = ip+":"+ts keyname = ip+":"+ts current = GET(keyname) MULTI current = INCR(keyname, 1) IF current != NULL AND current > 10 THEN EXPIRE(keyname,10) ERROR "too many requests per second" EXEC ELSE IF current < 10 THEN MULTI PERFORM_API_CALL() INCR(keyname,1) ELSE EXPIRE(keyname,10) ERROR "too many requests per second" END EXEC PERFORM_API_CALL() END Gotchas: ● make sure you set expires on the keys in a transaction because set or incr removes old expires values Examples: * from:http://redis.io/commands/incr
  • 12. Recipes - Twitter clone Objective: Duplicate the functionality of twitter Implementation: ● Generate Ids with String: INCR global:nextUserId => 1000 Username to id with String: SET username:antirez:uid 1000 ● Followers/Follwings with 2 sets: uid:1000:followers ● Timeline with List: uid:1000:posts ● Tweeting: ○ Create tweet id with String: INCR global:nextPostId => 10343 ○ Store tweet: SET post:10343 "$owner_id|$time|Having fun w/ Retwis" ○ Get Followers list and push tweetId to allow followers timelines: ■ LPUSH uid:$followeruid:posts 10343 ● View posts: ○ Get list of postIds: LRANGE uid:1000:posts 0 50 ○ For each postId, get posts to display: GET post:$postId From: ● http://redis.io/topics/twitter-clone
  • 13. Recipes - Twitter clone cont. Code: ● https://github.com/SpringSource/spring-data-keyvalue-examples ● http://retwis.antirez.com/ ● http://code.google.com/p/redis/downloads/list Performance: "On a very slow and loaded server, apache benchmark with 100 parallel clients issuing 100000 requests measured the average pageview to take 5 milliseconds. This means you can serve millions of users every day with just a single Linux box, and this one was monkey asses slow!" - Salvatore
  • 14. Redis roadmap v2.6: Server side scripting with Lua (v5.1): http://www.lua.org/manual/5.1/ ● Lots of possibilities with scripts - invent your own commands v3.0: ● Cluster support ● In dev for many months
  • 15. Other Recipes Old cookbook (soon to be updated): http://rediscookbook.org/ GeoHashing: https://github.com/doat/geodis Autocomplete: http://patshaughnessy.net/2011/11/29/two-ways-of-using-redis- to-build-a-nosql-autocomplete-search-index Slides 17-20: http://www.slideshare.net/dvirsky/introduction-to-redis-version-2 Digg clone design: http://groups.google.com/group/redis- db/browse_thread/thread/94d0dd1a24bf400e/98a0f5935380a075? lnk=gst&q=digg#98a0f5935380a075 Lots of other recipes: http://groups.google.com/group/redis-db Sinatra dashboard for redis: https://github.com/steelThread/redmon
  • 16. ¡Gracias! Chris Mordue Software Architect @cmordue