17
Redis @ Kijiji.it NoSQL Day 2013 - Udine Marco Borromeo (@borros)

Redis @ Kijiji.it

Embed Size (px)

DESCRIPTION

Redis @ Kijiji.it

Citation preview

Page 1: Redis @ Kijiji.it

Redis @ Kijiji.itNoSQL Day 2013 - UdineMarco Borromeo (@borros)

Page 2: Redis @ Kijiji.it

Dove salviamo...... i contatori?

... funzionalità “a tempo”?

... white/black lists?

... i log delle modifiche?

... cache feed esterni?

... coda di operazioni asincrone?

MySQL

Page 3: Redis @ Kijiji.it

Contatori in MySQL

SELECT COUNT(*)

Aggiungiamo un indice!

Creiamo dei trigger che aggiungono/sottraggono unità in una tabella di contatori *GASP*

Page 4: Redis @ Kijiji.it

“Creiamo dei trigger che aggiungono/sottraggono unità

in una tabella di contatori”

Page 5: Redis @ Kijiji.it

INCRDECR

(+ business logic nei listeners)

Page 6: Redis @ Kijiji.it

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

Page 7: Redis @ Kijiji.it

Funzionalità “a tempo”...

<count> = INCR <userUUID>:instant_repliesSETEX <userUUID>:instant_replies 60 <count>

(se <count> dello spam level...) SETEX <userUUID>:is_banned 600 1

Page 8: Redis @ Kijiji.it

White & Black Lists

SADD users_whitelist [email protected]

SISMEMBER users_whitelist [email protected]

SREM users_whitelist [email protected]

Page 9: Redis @ Kijiji.it

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>

Page 10: Redis @ Kijiji.it

Cache Feeds

Sorted Sets (score TS per ordinare)

Hash (Articolo)

Page 11: Redis @ Kijiji.it

Job Queue - Enqueue

jobId = INCR jobs.id

job = HMSET job:<jobId> job “sendMail” to “[email protected]

ZADD scheduled_jobs <TS> <jobId>

Page 12: Redis @ Kijiji.it

Job Queue - Schedule

ZRANGEBYSCORE scheduled_jobs -inf <TS>

LPUSH enqueued_job <jobId>

ZREM scheduled_jobs <jobId>

Page 13: Redis @ Kijiji.it

Job Queue - Worker

BRPOPLPUSH scheduled_jobs scheduled_jobs:<workerId>

Page 14: Redis @ Kijiji.it

Shared configLogin tokens

Accendere / Spegnere funzionalità

Locks

Page 15: Redis @ Kijiji.it

Ma qualcosa è andato storto...

Sharding

Sharding nei drivers

Page 16: Redis @ Kijiji.it

BZFlag ranks

Page 17: Redis @ Kijiji.it

Grazie!Marco Borromeo (@borros)