SlideShare a Scribd company logo
1 of 17
Download to read offline
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 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”
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 libera per bitcoin
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
White & Black Lists

SADD users_whitelist marborromeo@ebay.com
SISMEMBER users_whitelist marborromeo@ebay.com
SREM users_whitelist marborromeo@ebay.com
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 “marborromeo@ebay.com”
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 config
Login tokens
Accendere / Spegnere funzionalità
Locks
Ma qualcosa è andato storto...
Sharding
Sharding nei drivers
BZFlag ranks
Grazie!
Marco Borromeo (@borros)

More Related Content

Similar to Redis @ Kijiji.it

MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...Par-Tec S.p.A.
 
XE - Azure in the real world
XE - Azure in the real worldXE - Azure in the real world
XE - Azure in the real worldAlessio Biasiutti
 
Virtualizzazione
VirtualizzazioneVirtualizzazione
VirtualizzazioneLuca Giusti
 
noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]Andrea Maddalena
 
Reverse Engineering per dispositivi IoT
Reverse Engineering per dispositivi IoTReverse Engineering per dispositivi IoT
Reverse Engineering per dispositivi IoTAndrea Lazzarotto
 
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenant
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenantSaaS con Symfony2 un caso *molto* concreto di applicazione multitenant
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenantTassi Francesco
 

Similar to Redis @ Kijiji.it (8)

MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
 
XE - Azure in the real world
XE - Azure in the real worldXE - Azure in the real world
XE - Azure in the real world
 
Virtualizzazione
VirtualizzazioneVirtualizzazione
Virtualizzazione
 
noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]
 
Reverse Engineering per dispositivi IoT
Reverse Engineering per dispositivi IoTReverse Engineering per dispositivi IoT
Reverse Engineering per dispositivi IoT
 
Novita TYPO3 CMS 7.2
Novita TYPO3 CMS 7.2Novita TYPO3 CMS 7.2
Novita TYPO3 CMS 7.2
 
Devianze
DevianzeDevianze
Devianze
 
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenant
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenantSaaS con Symfony2 un caso *molto* concreto di applicazione multitenant
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenant
 

Redis @ Kijiji.it