SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Introduction
HumanTalks Nantes - 13 Mai 2014
Francois-Guillaume Ribreau
REmote DIctionary Server (Redis) is created by @antirez, written in
C, released in 2009, BSD licensed, was supported by VMWare and
now Pivotal.
Redis is an open source, networked, single threaded, in-
memory, advanced key-value store with optional durability.
It is often referred to as a data structure server since keys
can contain strings, hashes, lists, sets and sorted sets.
Key features
‣ Atomic operations
‣ Lua Scripting
‣ Pub/Sub
‣ Transactions
‣ Master/Slave replication
‣ Cluster (with automatic sharding)*
‣ Automatic failover (Redis Sentinel)
‣ Append Only File (AOF) persistence
‣ Snapshot (RDB file) persistence
Key features
‣ Atomic operations
‣ Lua Scripting
‣ Pub/Sub
‣ Transactions
‣ Master/Slave replication
‣ Cluster (with automatic sharding)*
‣ Automatic failover (Redis Sentinel)
‣ Append Only File (AOF) persistence
‣ Snapshot (RDB file) persistence
* currently in 3.0.0 beta-3
Key advantages
‣ Blazing* Fast
‣ Robust
‣ Easy to setup, use and maintain
‣ Extensible with LUA scripting
Key advantages
‣ Blazing* Fast
‣ Robust
‣ Easy to setup, use and maintain
‣ Extensible with LUA scripting
* as the cool kids say these days.
Key disadvantages
‣ Persistence consumes lot of I/O when using RDB
‣ all your data must fit in memory
Key disadvantages
all your data must
fit in memory
again.
all your data
must fit in
memory
What for ?
http://bit.ly/138IoSr
‣ Cache out-of-process
‣ Duplicate detector
‣ LIFO/FIFO Queues*, Priority
Queue
‣ Distributed HashMap
‣ UID Generator
‣ Pub/Sub
‣ Real-time analytics & chat apps
‣ Counting Stuff
‣ Metrics DB
‣ Implement expires on items
‣ Leaderboards (game high scores)
‣ Geolocation lookup
‣ API throttling (rate-limits)
‣ Autocomplete
‣ Social activity feed
‣ ...
http://bit.ly/1qiVDjb
cache:/
Keys
users:mostfollowed
users:1:followers
users:1:tweets
users:1
cache:/
Keys
users:mostfollowed
users:1:followers
users:1:tweets
users:1
Value Type
String
Hash
Set*
List
Sorted Set
cache:/
Keys
users:mostfollowed
users:1:followers
users:1:tweets
users:1
<!DOCTYPE	
  html><html><head><meta	
  ...	
  
charset='utf-­‐8'	
  />
Example
field member
username fgribreau
followers 2204
89 8 55 5 34 13 21
0 1 2 3
hello... hey!.. @Crea... New	
  pro...
field score
@ladygaga 41359356
@youtube 41770322
@barackobama 42872391
@justinbieber 51428544
@katyperry 52811148
Value Type
String
Hash
Set*
List
Sorted Set
* Since 2.8.9, Redis supports a new type: HyperLogLog (an memory efficient way to store and count unique elements in a set)
$	
  redis-­‐cli
redis>	
  get	
  talk:414:description
(nil)
redis>	
  set	
  talk:414:description	
  "Je	
  propose	
  ce	
  sujet	
  suite	
  à	
  une	
  suggestion	
  de	
  Quentin."
OK
redis>	
  get	
  talk:414:description
"Je	
  propose	
  ce	
  sujet	
  suite	
  xc3xa0	
  une	
  suggestion	
  de	
  Quentin."
redis>	
  expire	
  talk:414:description	
  5
(integer)	
  1
#	
  then	
  after	
  5	
  seconds
redis>	
  get	
  talk:414:description
(nil)
redis>	
  getrange	
  talk:414:description	
  47	
  53
"Quentin"
redis>	
  incr	
  talk:414:views
(integer)	
  1
redis>	
  incrby	
  talk:414:views	
  10
"11"
cache:/
Keys
<!DOCTYPE	
  html><html><head><meta	
  ...	
  
charset='utf-­‐8'	
  />
ExampleValue Type
String
append	
  bitcount	
  bitop	
  bitpos	
  decr	
  decrby	
  get	
  getbit	
  getrange	
  getset	
  incr	
  incrby	
  incrbyfloat	
  mget	
  
mset	
  msetnx	
  psetex	
  set	
  setbit	
  setex	
  setnx	
  setrange	
  strlen
http://bit.ly/1kRJn0N
Keys
users:1
Example
field member
username fgribreau
followers 2204
Value Type
Hash
redis>	
  hmset	
  users:1	
  username	
  fgribreau	
  followers	
  2204
OK
redis>	
  hgetall	
  users:1
1)	
  "username"
2)	
  "fgribreau"
3)	
  "followers"
4)	
  "2204"
redis>	
  hincrby	
  users:1	
  followers	
  1
(integer)	
  2205
redis>	
  hget	
  users:1	
  followers
"2205"
redis>	
  hset	
  users:1	
  username	
  humantalks
(integer)	
  0
hdel	
  hexists	
  hget	
  hgetall	
  hincrby	
  hincrbyfloat	
  hkeys	
  hlen	
  hmget	
  hmset	
  hset	
  hsetnx	
  hvals	
  hscan
Keys ExampleValue Type
redis>	
  sadd	
  users:1:followers	
  89	
  8	
  55	
  5	
  34	
  13	
  21
(integer)	
  7
redis>	
  sadd	
  users:2:followers	
  0	
  1	
  1	
  2	
  3	
  5	
  8	
  13	
  21
(integer)	
  8
redis>	
  sinter	
  users:1:followers	
  users:2:followers
1)	
  "5"
2)	
  "8"
3)	
  "13"
4)	
  "21"
redis>	
  scard	
  users:1:followers
(integer)	
  7
sadd	
  scard	
  sdiff	
  sdiffstore	
  sinter	
  sinterstore	
  sismember	
  smembers	
  smove	
  spop	
  srandmember	
  srem	
  
sunion	
  sunionstore	
  sscan
users:1:followers
Keys ExampleValue Type
redis>	
  sadd	
  users:1:followers	
  89	
  8	
  55	
  5	
  34	
  13	
  21
(integer)	
  7
redis>	
  sadd	
  users:2:followers	
  0	
  1	
  1	
  2	
  3	
  5	
  8	
  13	
  21
(integer)	
  8
redis>	
  sinter	
  users:1:followers	
  users:2:followers
1)	
  "5"
2)	
  "8"
3)	
  "13"
4)	
  "21"
redis>	
  scard	
  users:1:followers
(integer)	
  7
sadd	
  scard	
  sdiff	
  sdiffstore	
  sinter	
  sinterstore	
  sismember	
  smembers	
  smove	
  spop	
  srandmember	
  srem	
  
sunion	
  sunionstore	
  sscan
users:1:followers 89 8 55 5 34 13 21Set
Keys ExampleValue Type
redis>	
  rpush	
  users:1:tweets	
  hello...
(integer)	
  1
redis>	
  rpush	
  users:1:tweets	
  hey!...
(integer)	
  2
redis>	
  lindex	
  users:1:tweets	
  1
"hey!..."
blpop	
  brpop	
  brpoplpush	
  lindex	
  linsert	
  llen	
  lpop	
  lpush	
  lpushx	
  lrange	
  lrem	
  lset	
  ltrim	
  rpop	
  rpoplpush	
  
rpush	
  rpushx
users:1:tweets
#	
  Shell	
  1
redis>	
  brpop	
  queue	
  0
#	
  blocking	
  until
1)	
  "queue"
2)	
  "my_task"
(14.27s)
#	
  Shell	
  2
redis>	
  lpush	
  queue	
  my_task
(integer)	
  1
Keys ExampleValue Type
redis>	
  rpush	
  users:1:tweets	
  hello...
(integer)	
  1
redis>	
  rpush	
  users:1:tweets	
  hey!...
(integer)	
  2
redis>	
  lindex	
  users:1:tweets	
  1
"hey!..."
blpop	
  brpop	
  brpoplpush	
  lindex	
  linsert	
  llen	
  lpop	
  lpush	
  lpushx	
  lrange	
  lrem	
  lset	
  ltrim	
  rpop	
  rpoplpush	
  
rpush	
  rpushx
users:1:tweets
0 1 2 3
hello... hey!... @Crea... New	
  pro...
List
#	
  Shell	
  1
redis>	
  brpop	
  queue	
  0
#	
  blocking	
  until
1)	
  "queue"
2)	
  "my_task"
(14.27s)
#	
  Shell	
  2
redis>	
  lpush	
  queue	
  my_task
(integer)	
  1
Keys ExampleValue Type
redis>	
  zadd	
  users:byFollowers	
  51428544	
  
@kant	
  42872391	
  @einstein	
  #	
  etc.	
  ...
(integer)	
  5
redis>	
  zrevrange	
  users:byFollowers	
  0	
  2
1)	
  "@clesoleil"
2)	
  "@kant"
3)	
  "@einstein"
redis>	
  zrevrange	
  users:byFollowers	
  0	
  1	
  withscores
1)	
  "@clesoleil"
2)	
  "52811148"
3)	
  "@kant"
4)	
  "51428544"
redis>	
  zrevrank	
  users:byFollowers	
  @kant
(integer)	
  1
redis>	
  zscore	
  users:byFollowers	
  @kant
"51428544"
zadd	
  zcard	
  zcount	
  zincrby	
  zinterstore	
  zlexcount	
  zrange	
  zrangebylex	
  zrangebyscore	
  zrank	
  zrem	
  
zremrangebylex	
  zremrangebyrank	
  zremrangebyscore	
  zrevrange	
  zrevrangebyscore	
  zrevrank	
  zscore	
  
zunionstore	
  zscan
users:byFollowers
Keys ExampleValue Type
redis>	
  zadd	
  users:byFollowers	
  51428544	
  
@kant	
  42872391	
  @einstein	
  #	
  etc.	
  ...
(integer)	
  5
redis>	
  zrevrange	
  users:byFollowers	
  0	
  2
1)	
  "@clesoleil"
2)	
  "@kant"
3)	
  "@einstein"
redis>	
  zrevrange	
  users:byFollowers	
  0	
  1	
  withscores
1)	
  "@clesoleil"
2)	
  "52811148"
3)	
  "@kant"
4)	
  "51428544"
redis>	
  zrevrank	
  users:byFollowers	
  @kant
(integer)	
  1
redis>	
  zscore	
  users:byFollowers	
  @kant
"51428544"
zadd	
  zcard	
  zcount	
  zincrby	
  zinterstore	
  zlexcount	
  zrange	
  zrangebylex	
  zrangebyscore	
  zrank	
  zrem	
  
zremrangebylex	
  zremrangebyrank	
  zremrangebyscore	
  zrevrange	
  zrevrangebyscore	
  zrevrank	
  zscore	
  
zunionstore	
  zscan
users:byFollowers field score
@echouard 41359356
@tesla 41770322
@einstein 42872391
@kant 51428544
@clesoleil 52811148
Sorted Set
Who is using Redis?
http://bit.ly/1f0GkWi
http://bit.ly/1fp4ept
http://bit.ly/1f0Gq06
http://bit.ly/1fp4l4t
http://bit.ly/1f0GDjW
http://bit.ly/1fp4qVJ
http://bit.ly/1f0GWez
http://bit.ly/XX0yHy
http://bit.ly/1f0H11U
http://bit.ly/1bGQqJf
Who is using Redis?
http://www.xdata.me/?p=301
220.000.000.000 commands per day
500.000.000.000 reads per day
50.000.000.000 writes per day,
500+ servers
2000+ Redis instances!
Why am I talking
about Redis ?
BringrCofounder & CTO of
“ Create value for your business on Social Media,
from discussion to conversion ”
Professor @EPSI_Nantes & @UnivNantes on JavaScript (RIA/NodeJS) and NoSQL databases
bringr.net
“ Administrate everything, monitor in real-time.
Visualizing and editing Redis data-structures has never been so simple. ”
Founder of Redsmin redsmin.com
Editor of @RedisWeekly
“ A free, once–weekly e-mail round-up of Redis news, articles, tools and libraries. ”
redisweekly.com
Questions ?
@FGRibreau
bringr.net redsmin.com redisweekly.com
Thank you.

Contenu connexe

Tendances

Paris Redis Meetup Introduction
Paris Redis Meetup IntroductionParis Redis Meetup Introduction
Paris Redis Meetup IntroductionGregory Boissinot
 
Kicking ass with redis
Kicking ass with redisKicking ass with redis
Kicking ass with redisDvir Volk
 
Redis and its many use cases
Redis and its many use casesRedis and its many use cases
Redis and its many use casesChristian Joudrey
 
Redis Introduction
Redis IntroductionRedis Introduction
Redis IntroductionAlex Su
 
What's new in Redis v3.2
What's new in Redis v3.2What's new in Redis v3.2
What's new in Redis v3.2Itamar Haber
 
Introduction to redis - version 2
Introduction to redis - version 2Introduction to redis - version 2
Introduction to redis - version 2Dvir Volk
 
Redis SoCraTes 2014
Redis SoCraTes 2014Redis SoCraTes 2014
Redis SoCraTes 2014steffenbauer
 
Everything you always wanted to know about Redis but were afraid to ask
Everything you always wanted to know about Redis but were afraid to askEverything you always wanted to know about Redis but were afraid to ask
Everything you always wanted to know about Redis but were afraid to askCarlos Abalde
 
Redis Use Patterns (DevconTLV June 2014)
Redis Use Patterns (DevconTLV June 2014)Redis Use Patterns (DevconTLV June 2014)
Redis Use Patterns (DevconTLV June 2014)Itamar Haber
 
Redis in Practice
Redis in PracticeRedis in Practice
Redis in PracticeNoah Davis
 
Redis Functions, Data Structures for Web Scale Apps
Redis Functions, Data Structures for Web Scale AppsRedis Functions, Data Structures for Web Scale Apps
Redis Functions, Data Structures for Web Scale AppsDave Nielsen
 
Extend Redis with Modules
Extend Redis with ModulesExtend Redis with Modules
Extend Redis with ModulesItamar Haber
 
Scaling php applications with redis
Scaling php applications with redisScaling php applications with redis
Scaling php applications with redisjimbojsb
 
Managing Your Security Logs with Elasticsearch
Managing Your Security Logs with ElasticsearchManaging Your Security Logs with Elasticsearch
Managing Your Security Logs with ElasticsearchVic Hargrave
 
Elasticsearch for Logs & Metrics - a deep dive
Elasticsearch for Logs & Metrics - a deep diveElasticsearch for Logs & Metrics - a deep dive
Elasticsearch for Logs & Metrics - a deep diveSematext Group, Inc.
 
Redis - for duplicate detection on real time stream
Redis - for duplicate detection on real time streamRedis - for duplicate detection on real time stream
Redis - for duplicate detection on real time streamCodemotion
 
Building the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for HadoopBuilding the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for HadoopAll Things Open
 

Tendances (20)

Paris Redis Meetup Introduction
Paris Redis Meetup IntroductionParis Redis Meetup Introduction
Paris Redis Meetup Introduction
 
Kicking ass with redis
Kicking ass with redisKicking ass with redis
Kicking ass with redis
 
Redis and its many use cases
Redis and its many use casesRedis and its many use cases
Redis and its many use cases
 
Redis Introduction
Redis IntroductionRedis Introduction
Redis Introduction
 
What's new in Redis v3.2
What's new in Redis v3.2What's new in Redis v3.2
What's new in Redis v3.2
 
Introduction to redis - version 2
Introduction to redis - version 2Introduction to redis - version 2
Introduction to redis - version 2
 
Redis SoCraTes 2014
Redis SoCraTes 2014Redis SoCraTes 2014
Redis SoCraTes 2014
 
Redis 101
Redis 101Redis 101
Redis 101
 
Redis and it's data types
Redis and it's data typesRedis and it's data types
Redis and it's data types
 
Everything you always wanted to know about Redis but were afraid to ask
Everything you always wanted to know about Redis but were afraid to askEverything you always wanted to know about Redis but were afraid to ask
Everything you always wanted to know about Redis but were afraid to ask
 
Redis Use Patterns (DevconTLV June 2014)
Redis Use Patterns (DevconTLV June 2014)Redis Use Patterns (DevconTLV June 2014)
Redis Use Patterns (DevconTLV June 2014)
 
Redis in Practice
Redis in PracticeRedis in Practice
Redis in Practice
 
Redis Functions, Data Structures for Web Scale Apps
Redis Functions, Data Structures for Web Scale AppsRedis Functions, Data Structures for Web Scale Apps
Redis Functions, Data Structures for Web Scale Apps
 
Extend Redis with Modules
Extend Redis with ModulesExtend Redis with Modules
Extend Redis with Modules
 
RedisConf 2016 - Redis usage and ecosystem
RedisConf 2016 - Redis usage and ecosystemRedisConf 2016 - Redis usage and ecosystem
RedisConf 2016 - Redis usage and ecosystem
 
Scaling php applications with redis
Scaling php applications with redisScaling php applications with redis
Scaling php applications with redis
 
Managing Your Security Logs with Elasticsearch
Managing Your Security Logs with ElasticsearchManaging Your Security Logs with Elasticsearch
Managing Your Security Logs with Elasticsearch
 
Elasticsearch for Logs & Metrics - a deep dive
Elasticsearch for Logs & Metrics - a deep diveElasticsearch for Logs & Metrics - a deep dive
Elasticsearch for Logs & Metrics - a deep dive
 
Redis - for duplicate detection on real time stream
Redis - for duplicate detection on real time streamRedis - for duplicate detection on real time stream
Redis - for duplicate detection on real time stream
 
Building the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for HadoopBuilding the Right Platform Architecture for Hadoop
Building the Right Platform Architecture for Hadoop
 

En vedette

New York REDIS Meetup Welcome Session
New York REDIS Meetup Welcome SessionNew York REDIS Meetup Welcome Session
New York REDIS Meetup Welcome SessionAleksandr Yampolskiy
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisDvir Volk
 
Speed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisSpeed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisRicard Clau
 
Découverte de Redis
Découverte de RedisDécouverte de Redis
Découverte de RedisJEMLI Fathi
 
Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2) Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2) Frank Denis
 

En vedette (8)

New York REDIS Meetup Welcome Session
New York REDIS Meetup Welcome SessionNew York REDIS Meetup Welcome Session
New York REDIS Meetup Welcome Session
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Redis keynote
Redis keynoteRedis keynote
Redis keynote
 
Symfonytn
SymfonytnSymfonytn
Symfonytn
 
Speed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisSpeed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with Redis
 
Découverte de Redis
Découverte de RedisDécouverte de Redis
Découverte de Redis
 
Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2) Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2)
 
REX Storm Redis
REX Storm RedisREX Storm Redis
REX Storm Redis
 

Similaire à Introduction to Redis

Managing your black friday logs - Code Europe
Managing your black friday logs - Code EuropeManaging your black friday logs - Code Europe
Managing your black friday logs - Code EuropeDavid Pilato
 
Managing your Black Friday Logs NDC Oslo
Managing your  Black Friday Logs NDC OsloManaging your  Black Friday Logs NDC Oslo
Managing your Black Friday Logs NDC OsloDavid Pilato
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nltieleman
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nlbartzon
 
Live Memory Forensics on Android devices
Live Memory Forensics on Android devicesLive Memory Forensics on Android devices
Live Memory Forensics on Android devicesNikos Gkogkos
 
Gemtalk Systems Product Roadmap
Gemtalk Systems Product RoadmapGemtalk Systems Product Roadmap
Gemtalk Systems Product RoadmapESUG
 
Redis for duplicate detection on real time stream
Redis for duplicate detection on real time streamRedis for duplicate detection on real time stream
Redis for duplicate detection on real time streamRoberto Franchini
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git RightSven Peters
 
10 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 201910 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 2019Dave Nielsen
 
Cassandra drivers and libraries
Cassandra drivers and librariesCassandra drivers and libraries
Cassandra drivers and librariesDuyhai Doan
 
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...RootedCON
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache KafkaShiao-An Yuan
 
Migrating To PostgreSQL
Migrating To PostgreSQLMigrating To PostgreSQL
Migrating To PostgreSQLGrant Fritchey
 
Digging for Android Kernel Bugs
Digging for Android Kernel BugsDigging for Android Kernel Bugs
Digging for Android Kernel BugsJiahong Fang
 
Chenli linux-kerne-community
Chenli linux-kerne-communityChenli linux-kerne-community
Chenli linux-kerne-community力 陈
 
10 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 201910 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 2019Dave Nielsen
 

Similaire à Introduction to Redis (20)

Mini-Training: Redis
Mini-Training: RedisMini-Training: Redis
Mini-Training: Redis
 
Managing your black friday logs - Code Europe
Managing your black friday logs - Code EuropeManaging your black friday logs - Code Europe
Managing your black friday logs - Code Europe
 
Managing your Black Friday Logs NDC Oslo
Managing your  Black Friday Logs NDC OsloManaging your  Black Friday Logs NDC Oslo
Managing your Black Friday Logs NDC Oslo
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nl
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nl
 
Live Memory Forensics on Android devices
Live Memory Forensics on Android devicesLive Memory Forensics on Android devices
Live Memory Forensics on Android devices
 
Gemtalk Systems Product Roadmap
Gemtalk Systems Product RoadmapGemtalk Systems Product Roadmap
Gemtalk Systems Product Roadmap
 
Redis for duplicate detection on real time stream
Redis for duplicate detection on real time streamRedis for duplicate detection on real time stream
Redis for duplicate detection on real time stream
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
 
10 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 201910 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 2019
 
Fuzzing - Part 1
Fuzzing - Part 1Fuzzing - Part 1
Fuzzing - Part 1
 
Cassandra drivers and libraries
Cassandra drivers and librariesCassandra drivers and libraries
Cassandra drivers and libraries
 
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
Sergi Álvarez + Roi Martín - radare2: From forensics to bindiffing [RootedCON...
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Migrating To PostgreSQL
Migrating To PostgreSQLMigrating To PostgreSQL
Migrating To PostgreSQL
 
REDIS327
REDIS327REDIS327
REDIS327
 
Digging for Android Kernel Bugs
Digging for Android Kernel BugsDigging for Android Kernel Bugs
Digging for Android Kernel Bugs
 
Chenli linux-kerne-community
Chenli linux-kerne-communityChenli linux-kerne-community
Chenli linux-kerne-community
 
Git vs. Mercurial
Git vs. MercurialGit vs. Mercurial
Git vs. Mercurial
 
10 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 201910 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 2019
 

Plus de François-Guillaume Ribreau

REX LEAN- Créer un SaaS et être rentable après 6 mois
REX LEAN- Créer un SaaS et être rentable après 6 moisREX LEAN- Créer un SaaS et être rentable après 6 mois
REX LEAN- Créer un SaaS et être rentable après 6 moisFrançois-Guillaume Ribreau
 
⛳️ Votre API passe-t-elle le contrôle technique ?
⛳️ Votre API passe-t-elle le contrôle technique ?⛳️ Votre API passe-t-elle le contrôle technique ?
⛳️ Votre API passe-t-elle le contrôle technique ?François-Guillaume Ribreau
 
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...François-Guillaume Ribreau
 
He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!François-Guillaume Ribreau
 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France François-Guillaume Ribreau
 
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...François-Guillaume Ribreau
 
[BreizhCamp, format 15min] Une api rest et GraphQL sans code grâce à PostgR...
[BreizhCamp, format 15min] Une api rest et GraphQL sans code grâce à PostgR...[BreizhCamp, format 15min] Une api rest et GraphQL sans code grâce à PostgR...
[BreizhCamp, format 15min] Une api rest et GraphQL sans code grâce à PostgR...François-Guillaume Ribreau
 
Implementing pattern-matching in JavaScript (full version)
Implementing pattern-matching in JavaScript (full version)Implementing pattern-matching in JavaScript (full version)
Implementing pattern-matching in JavaScript (full version)François-Guillaume Ribreau
 
Implementing pattern-matching in JavaScript (short version)
Implementing pattern-matching in JavaScript (short version)Implementing pattern-matching in JavaScript (short version)
Implementing pattern-matching in JavaScript (short version)François-Guillaume Ribreau
 
Automatic constraints as a team maturity accelerator for startups
Automatic constraints as a team maturity accelerator for startupsAutomatic constraints as a team maturity accelerator for startups
Automatic constraints as a team maturity accelerator for startupsFrançois-Guillaume Ribreau
 
Les enjeux de l'information et de l'algorithmique dans notre société
Les enjeux de l'information et de l'algorithmique dans notre sociétéLes enjeux de l'information et de l'algorithmique dans notre société
Les enjeux de l'information et de l'algorithmique dans notre sociétéFrançois-Guillaume Ribreau
 
Continous Integration of (JS) projects & check-build philosophy
Continous Integration of (JS) projects & check-build philosophyContinous Integration of (JS) projects & check-build philosophy
Continous Integration of (JS) projects & check-build philosophyFrançois-Guillaume Ribreau
 

Plus de François-Guillaume Ribreau (16)

REX LEAN- Créer un SaaS et être rentable après 6 mois
REX LEAN- Créer un SaaS et être rentable après 6 moisREX LEAN- Créer un SaaS et être rentable après 6 mois
REX LEAN- Créer un SaaS et être rentable après 6 mois
 
⛳️ Votre API passe-t-elle le contrôle technique ?
⛳️ Votre API passe-t-elle le contrôle technique ?⛳️ Votre API passe-t-elle le contrôle technique ?
⛳️ Votre API passe-t-elle le contrôle technique ?
 
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
 
He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!
 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
 
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
 
[BreizhCamp, format 15min] Une api rest et GraphQL sans code grâce à PostgR...
[BreizhCamp, format 15min] Une api rest et GraphQL sans code grâce à PostgR...[BreizhCamp, format 15min] Une api rest et GraphQL sans code grâce à PostgR...
[BreizhCamp, format 15min] Une api rest et GraphQL sans code grâce à PostgR...
 
Implementing pattern-matching in JavaScript (full version)
Implementing pattern-matching in JavaScript (full version)Implementing pattern-matching in JavaScript (full version)
Implementing pattern-matching in JavaScript (full version)
 
Implementing pattern-matching in JavaScript (short version)
Implementing pattern-matching in JavaScript (short version)Implementing pattern-matching in JavaScript (short version)
Implementing pattern-matching in JavaScript (short version)
 
Automatic constraints as a team maturity accelerator for startups
Automatic constraints as a team maturity accelerator for startupsAutomatic constraints as a team maturity accelerator for startups
Automatic constraints as a team maturity accelerator for startups
 
Development Principles & Philosophy
Development Principles & PhilosophyDevelopment Principles & Philosophy
Development Principles & Philosophy
 
Les enjeux de l'information et de l'algorithmique dans notre société
Les enjeux de l'information et de l'algorithmique dans notre sociétéLes enjeux de l'information et de l'algorithmique dans notre société
Les enjeux de l'information et de l'algorithmique dans notre société
 
How I monitor SaaS products
How I monitor SaaS productsHow I monitor SaaS products
How I monitor SaaS products
 
Continous Integration of (JS) projects & check-build philosophy
Continous Integration of (JS) projects & check-build philosophyContinous Integration of (JS) projects & check-build philosophy
Continous Integration of (JS) projects & check-build philosophy
 
Approfondissement CSS3
Approfondissement CSS3Approfondissement CSS3
Approfondissement CSS3
 
Découverte HTML5/CSS3
Découverte HTML5/CSS3Découverte HTML5/CSS3
Découverte HTML5/CSS3
 

Dernier

A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 

Dernier (20)

A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 

Introduction to Redis

  • 1. Introduction HumanTalks Nantes - 13 Mai 2014 Francois-Guillaume Ribreau
  • 2. REmote DIctionary Server (Redis) is created by @antirez, written in C, released in 2009, BSD licensed, was supported by VMWare and now Pivotal. Redis is an open source, networked, single threaded, in- memory, advanced key-value store with optional durability. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.
  • 3. Key features ‣ Atomic operations ‣ Lua Scripting ‣ Pub/Sub ‣ Transactions ‣ Master/Slave replication ‣ Cluster (with automatic sharding)* ‣ Automatic failover (Redis Sentinel) ‣ Append Only File (AOF) persistence ‣ Snapshot (RDB file) persistence
  • 4. Key features ‣ Atomic operations ‣ Lua Scripting ‣ Pub/Sub ‣ Transactions ‣ Master/Slave replication ‣ Cluster (with automatic sharding)* ‣ Automatic failover (Redis Sentinel) ‣ Append Only File (AOF) persistence ‣ Snapshot (RDB file) persistence * currently in 3.0.0 beta-3
  • 5. Key advantages ‣ Blazing* Fast ‣ Robust ‣ Easy to setup, use and maintain ‣ Extensible with LUA scripting
  • 6. Key advantages ‣ Blazing* Fast ‣ Robust ‣ Easy to setup, use and maintain ‣ Extensible with LUA scripting * as the cool kids say these days.
  • 7. Key disadvantages ‣ Persistence consumes lot of I/O when using RDB ‣ all your data must fit in memory
  • 8. Key disadvantages all your data must fit in memory
  • 10. all your data must fit in memory
  • 11. What for ? http://bit.ly/138IoSr ‣ Cache out-of-process ‣ Duplicate detector ‣ LIFO/FIFO Queues*, Priority Queue ‣ Distributed HashMap ‣ UID Generator ‣ Pub/Sub ‣ Real-time analytics & chat apps ‣ Counting Stuff ‣ Metrics DB ‣ Implement expires on items ‣ Leaderboards (game high scores) ‣ Geolocation lookup ‣ API throttling (rate-limits) ‣ Autocomplete ‣ Social activity feed ‣ ... http://bit.ly/1qiVDjb
  • 14. cache:/ Keys users:mostfollowed users:1:followers users:1:tweets users:1 <!DOCTYPE  html><html><head><meta  ...   charset='utf-­‐8'  /> Example field member username fgribreau followers 2204 89 8 55 5 34 13 21 0 1 2 3 hello... hey!.. @Crea... New  pro... field score @ladygaga 41359356 @youtube 41770322 @barackobama 42872391 @justinbieber 51428544 @katyperry 52811148 Value Type String Hash Set* List Sorted Set * Since 2.8.9, Redis supports a new type: HyperLogLog (an memory efficient way to store and count unique elements in a set)
  • 15. $  redis-­‐cli redis>  get  talk:414:description (nil) redis>  set  talk:414:description  "Je  propose  ce  sujet  suite  à  une  suggestion  de  Quentin." OK redis>  get  talk:414:description "Je  propose  ce  sujet  suite  xc3xa0  une  suggestion  de  Quentin." redis>  expire  talk:414:description  5 (integer)  1 #  then  after  5  seconds redis>  get  talk:414:description (nil) redis>  getrange  talk:414:description  47  53 "Quentin" redis>  incr  talk:414:views (integer)  1 redis>  incrby  talk:414:views  10 "11" cache:/ Keys <!DOCTYPE  html><html><head><meta  ...   charset='utf-­‐8'  /> ExampleValue Type String append  bitcount  bitop  bitpos  decr  decrby  get  getbit  getrange  getset  incr  incrby  incrbyfloat  mget   mset  msetnx  psetex  set  setbit  setex  setnx  setrange  strlen http://bit.ly/1kRJn0N
  • 16. Keys users:1 Example field member username fgribreau followers 2204 Value Type Hash redis>  hmset  users:1  username  fgribreau  followers  2204 OK redis>  hgetall  users:1 1)  "username" 2)  "fgribreau" 3)  "followers" 4)  "2204" redis>  hincrby  users:1  followers  1 (integer)  2205 redis>  hget  users:1  followers "2205" redis>  hset  users:1  username  humantalks (integer)  0 hdel  hexists  hget  hgetall  hincrby  hincrbyfloat  hkeys  hlen  hmget  hmset  hset  hsetnx  hvals  hscan
  • 17. Keys ExampleValue Type redis>  sadd  users:1:followers  89  8  55  5  34  13  21 (integer)  7 redis>  sadd  users:2:followers  0  1  1  2  3  5  8  13  21 (integer)  8 redis>  sinter  users:1:followers  users:2:followers 1)  "5" 2)  "8" 3)  "13" 4)  "21" redis>  scard  users:1:followers (integer)  7 sadd  scard  sdiff  sdiffstore  sinter  sinterstore  sismember  smembers  smove  spop  srandmember  srem   sunion  sunionstore  sscan users:1:followers
  • 18. Keys ExampleValue Type redis>  sadd  users:1:followers  89  8  55  5  34  13  21 (integer)  7 redis>  sadd  users:2:followers  0  1  1  2  3  5  8  13  21 (integer)  8 redis>  sinter  users:1:followers  users:2:followers 1)  "5" 2)  "8" 3)  "13" 4)  "21" redis>  scard  users:1:followers (integer)  7 sadd  scard  sdiff  sdiffstore  sinter  sinterstore  sismember  smembers  smove  spop  srandmember  srem   sunion  sunionstore  sscan users:1:followers 89 8 55 5 34 13 21Set
  • 19. Keys ExampleValue Type redis>  rpush  users:1:tweets  hello... (integer)  1 redis>  rpush  users:1:tweets  hey!... (integer)  2 redis>  lindex  users:1:tweets  1 "hey!..." blpop  brpop  brpoplpush  lindex  linsert  llen  lpop  lpush  lpushx  lrange  lrem  lset  ltrim  rpop  rpoplpush   rpush  rpushx users:1:tweets #  Shell  1 redis>  brpop  queue  0 #  blocking  until 1)  "queue" 2)  "my_task" (14.27s) #  Shell  2 redis>  lpush  queue  my_task (integer)  1
  • 20. Keys ExampleValue Type redis>  rpush  users:1:tweets  hello... (integer)  1 redis>  rpush  users:1:tweets  hey!... (integer)  2 redis>  lindex  users:1:tweets  1 "hey!..." blpop  brpop  brpoplpush  lindex  linsert  llen  lpop  lpush  lpushx  lrange  lrem  lset  ltrim  rpop  rpoplpush   rpush  rpushx users:1:tweets 0 1 2 3 hello... hey!... @Crea... New  pro... List #  Shell  1 redis>  brpop  queue  0 #  blocking  until 1)  "queue" 2)  "my_task" (14.27s) #  Shell  2 redis>  lpush  queue  my_task (integer)  1
  • 21. Keys ExampleValue Type redis>  zadd  users:byFollowers  51428544   @kant  42872391  @einstein  #  etc.  ... (integer)  5 redis>  zrevrange  users:byFollowers  0  2 1)  "@clesoleil" 2)  "@kant" 3)  "@einstein" redis>  zrevrange  users:byFollowers  0  1  withscores 1)  "@clesoleil" 2)  "52811148" 3)  "@kant" 4)  "51428544" redis>  zrevrank  users:byFollowers  @kant (integer)  1 redis>  zscore  users:byFollowers  @kant "51428544" zadd  zcard  zcount  zincrby  zinterstore  zlexcount  zrange  zrangebylex  zrangebyscore  zrank  zrem   zremrangebylex  zremrangebyrank  zremrangebyscore  zrevrange  zrevrangebyscore  zrevrank  zscore   zunionstore  zscan users:byFollowers
  • 22. Keys ExampleValue Type redis>  zadd  users:byFollowers  51428544   @kant  42872391  @einstein  #  etc.  ... (integer)  5 redis>  zrevrange  users:byFollowers  0  2 1)  "@clesoleil" 2)  "@kant" 3)  "@einstein" redis>  zrevrange  users:byFollowers  0  1  withscores 1)  "@clesoleil" 2)  "52811148" 3)  "@kant" 4)  "51428544" redis>  zrevrank  users:byFollowers  @kant (integer)  1 redis>  zscore  users:byFollowers  @kant "51428544" zadd  zcard  zcount  zincrby  zinterstore  zlexcount  zrange  zrangebylex  zrangebyscore  zrank  zrem   zremrangebylex  zremrangebyrank  zremrangebyscore  zrevrange  zrevrangebyscore  zrevrank  zscore   zunionstore  zscan users:byFollowers field score @echouard 41359356 @tesla 41770322 @einstein 42872391 @kant 51428544 @clesoleil 52811148 Sorted Set
  • 23. Who is using Redis? http://bit.ly/1f0GkWi http://bit.ly/1fp4ept http://bit.ly/1f0Gq06 http://bit.ly/1fp4l4t http://bit.ly/1f0GDjW http://bit.ly/1fp4qVJ http://bit.ly/1f0GWez http://bit.ly/XX0yHy http://bit.ly/1f0H11U http://bit.ly/1bGQqJf
  • 24. Who is using Redis? http://www.xdata.me/?p=301 220.000.000.000 commands per day 500.000.000.000 reads per day 50.000.000.000 writes per day, 500+ servers 2000+ Redis instances!
  • 25. Why am I talking about Redis ?
  • 26. BringrCofounder & CTO of “ Create value for your business on Social Media, from discussion to conversion ” Professor @EPSI_Nantes & @UnivNantes on JavaScript (RIA/NodeJS) and NoSQL databases bringr.net
  • 27. “ Administrate everything, monitor in real-time. Visualizing and editing Redis data-structures has never been so simple. ” Founder of Redsmin redsmin.com
  • 28. Editor of @RedisWeekly “ A free, once–weekly e-mail round-up of Redis news, articles, tools and libraries. ” redisweekly.com
  • 29. Questions ? @FGRibreau bringr.net redsmin.com redisweekly.com Thank you.