Redis @ Kijiji.it
-
Upload
marco-borromeo -
Category
Technology
-
view
1.916 -
download
0
description
Transcript of Redis @ Kijiji.it
Redis @ Kijiji.itNoSQL Day 2013 - UdineMarco Borromeo (@borros)
Dove salviamo...... i contatori?
... funzionalità “a tempo”?
... white/black lists?
... i log delle modifiche?
... cache feed esterni?
... coda di operazioni asincrone?
MySQL
Contatori in MySQL
SELECT COUNT(*)
Aggiungiamo un indice!
Creiamo dei trigger che aggiungono/sottraggono unità in una tabella di contatori *GASP*
“Creiamo dei trigger che aggiungono/sottraggono unità
in una tabella di contatori”
INCRDECR
(+ 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 libera per bitcoin
Funzionalità “a tempo”...
<count> = INCR <userUUID>:instant_repliesSETEX <userUUID>:instant_replies 60 <count>
(se <count> dello spam level...) SETEX <userUUID>:is_banned 600 1
White & Black Lists
SADD users_whitelist [email protected]
SISMEMBER users_whitelist [email protected]
SREM users_whitelist [email protected]
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>
Cache Feeds
Sorted Sets (score TS per ordinare)
Hash (Articolo)
Job Queue - Enqueue
jobId = INCR jobs.id
job = HMSET job:<jobId> job “sendMail” to “[email protected]”
ZADD scheduled_jobs <TS> <jobId>
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 configLogin tokens
Accendere / Spegnere funzionalità
Locks
Ma qualcosa è andato storto...
Sharding
Sharding nei drivers
BZFlag ranks
Grazie!Marco Borromeo (@borros)