sql >> Databasteknik >  >> NoSQL >> Redis

Vilken är den bästa strategin för att synkronisera Redis-data till MySQL?

Du behöver inte hacka något;)

Jag är inte helt säker på varför du behöver data på mysql. Om jag visste det kanske det skulle finnas ett mer passande svar. I vilket fall som helst, som ett generiskt svar kan du använda redis-knapputrymmesaviseringar

Du kan prenumerera på kommandona HSET, HMSET, HDEL och DEL på dina nycklar, så att du får ett meddelande varje gång en nyckel raderas eller ett hashvärde ställs in eller tas bort.

Observera att om du missar någon avisering skulle du ha en inkonsekvens. Så då och då kan du bara använda SCAN-kommandot för att gå igenom alla dina nycklar och kolla på mysql om de behöver uppdateras.

En annan strategi kan vara att upprätthålla två separata strukturer. Den ena skulle vara hashen med värdena, och den andra skulle vara en ZSET av alla värden sorterade efter uppdateringens tidsstämpel. Det bästa sättet att hålla båda strukturerna uppdaterade skulle vara att skriva två eller tre lua-skript (infoga/uppdatera och ta bort) som skulle fungera på hash och zset atomärt.

Sedan kan du bara regelbundet fråga ZSET för elementen med en tidsstämpel högre än din senaste synkroniseringsoperation, hämta alla nycklar som uppdaterades (det skulle inkludera borttagna nycklar, om du inte vill behålla en andra ZSET exklusivt för dem) och sedan bara hämta alla element med nyckel och synkronisera till mysql.

Hoppas det kommer att fungera för dig!



  1. Redigo ScanStruct-fel med time.Time

  2. hur $project ObjectId till strängvärde i mongodb-aggregat?

  3. Hur sammanställer man summan i MongoDB för att få ett totalt antal?

  4. Redis/Jedis ingen enskild felpunkt och automatiserad failover