Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Redis @ Kijiji.it
NoSQL Day 2013 - Udine
Marco Borromeo (@borros)
Dove salviamo...
... i contatori?
... funzionalità “a tempo”?
... white/black lists?
... i log delle modifiche?
... cache f...
Contatori in MySQL
SELECT COUNT(*)
Aggiungiamo un indice!
Creiamo dei trigger che aggiungono/sottraggono unità in una tabe...
“Creiamo dei trigger
che aggiungono/sottraggono unità
in una tabella di contatori”
INCR
DECR
(+ business logic nei listeners)
Introduzione di Redis
2 Shards
Ogni shard formato da un Master e uno Slave
Custom Failover
2 eth
RAM come se piovesse
CPU ...
Funzionalità “a tempo”...
<count> = INCR <userUUID>:instant_replies
SETEX <userUUID>:instant_replies 60 <count>
(se <count...
White & Black Lists

SADD users_whitelist marborromeo@ebay.com
SISMEMBER users_whitelist marborromeo@ebay.com
SREM users_w...
Time series (semplici)

<action_id> = INCR admin_actions
HSET admin_action:<action_id> action changeCatgory admin_user_id ...
Cache Feeds

Sorted Sets (score TS per ordinare)
Hash (Articolo)
Job Queue - Enqueue

jobId = INCR jobs.id
job = HMSET job:<jobId> job “sendMail” to “marborromeo@ebay.com”
ZADD scheduled_...
Job Queue - Schedule

ZRANGEBYSCORE scheduled_jobs -inf <TS>
LPUSH enqueued_job <jobId>
ZREM scheduled_jobs <jobId>
Job Queue - Worker

BRPOPLPUSH scheduled_jobs scheduled_jobs:<workerId>
Shared config
Login tokens
Accendere / Spegnere funzionalità
Locks
Ma qualcosa è andato storto...
Sharding
Sharding nei drivers
BZFlag ranks
Grazie!
Marco Borromeo (@borros)
Upcoming SlideShare
Loading in …5
×

Redis @ Kijiji.it

2,365 views

Published on

Redis @ Kijiji.it

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

Redis @ Kijiji.it

  1. 1. Redis @ Kijiji.it NoSQL Day 2013 - Udine Marco Borromeo (@borros)
  2. 2. Dove salviamo... ... i contatori? ... funzionalità “a tempo”? ... white/black lists? ... i log delle modifiche? ... cache feed esterni? ... coda di operazioni asincrone? MySQL
  3. 3. Contatori in MySQL SELECT COUNT(*) Aggiungiamo un indice! Creiamo dei trigger che aggiungono/sottraggono unità in una tabella di contatori *GASP*
  4. 4. “Creiamo dei trigger che aggiungono/sottraggono unità in una tabella di contatori”
  5. 5. INCR DECR (+ business logic nei listeners)
  6. 6. Introduzione di Redis 2 Shards Ogni shard formato da un Master e uno Slave Custom Failover 2 eth RAM come se piovesse CPU libera per bitcoin
  7. 7. Funzionalità “a tempo”... <count> = INCR <userUUID>:instant_replies SETEX <userUUID>:instant_replies 60 <count> (se <count> dello spam level...) SETEX <userUUID>:is_banned 600 1
  8. 8. White & Black Lists SADD users_whitelist marborromeo@ebay.com SISMEMBER users_whitelist marborromeo@ebay.com SREM users_whitelist marborromeo@ebay.com
  9. 9. Time series (semplici) <action_id> = INCR admin_actions HSET admin_action:<action_id> action changeCatgory admin_user_id 1 ZADD post:2:admin_actions <TS> <action_id>
  10. 10. Cache Feeds Sorted Sets (score TS per ordinare) Hash (Articolo)
  11. 11. Job Queue - Enqueue jobId = INCR jobs.id job = HMSET job:<jobId> job “sendMail” to “marborromeo@ebay.com” ZADD scheduled_jobs <TS> <jobId>
  12. 12. Job Queue - Schedule ZRANGEBYSCORE scheduled_jobs -inf <TS> LPUSH enqueued_job <jobId> ZREM scheduled_jobs <jobId>
  13. 13. Job Queue - Worker BRPOPLPUSH scheduled_jobs scheduled_jobs:<workerId>
  14. 14. Shared config Login tokens Accendere / Spegnere funzionalità Locks
  15. 15. Ma qualcosa è andato storto... Sharding Sharding nei drivers
  16. 16. BZFlag ranks
  17. 17. Grazie! Marco Borromeo (@borros)

×