Redis
 sql >> база данни >  >> NoSQL >> Redis

Каква е най-добрата стратегия за синхронизиране на Redis данни с MySQL?

Не е нужно да хакнете нищо;)

Не съм напълно сигурен защо имате нужда от данните в mysql. Ако знаех, може би щеше да има по-подходящ отговор. Във всеки случай, като общ отговор можете да използвате известия за ключово пространство на redis

Можете да се абонирате за командите HSET, HMSET, HDEL и DEL на вашите ключове, така че ще получавате известие всеки път, когато ключ бъде изтрит или хеш стойност е зададена или премахната.

Имайте предвид, че ако пропуснете някое известие, ще имате несъответствие. Така че от време на време можете просто да използвате командата SCAN, за да преминете през всичките си ключове и да проверите в mysql дали трябва да бъдат актуализирани.

Друга стратегия може да бъде поддържането на две отделни структури. Единият ще бъде хешът със стойностите, а другият ще бъде ZSET на всички стойности, сортирани по времева марка на актуализиране. Най-добрият начин да поддържате и двете структури актуални би било да напишете два или три lua скрипта (вмъкване/актуализиране и изтриване), които да работят с хеша и zset атомарно.

След това можете просто периодично да заявявате ZSET за елементите с времева марка, по-висока от последната ви операция за синхронизиране, да получите всички ключове, които са били актуализирани (това ще включва изтрити ключове, освен ако не искате да запазите втори ZSET изключително за тях) и след това просто извличане на всички елементи по ключ и синхронизиране с mysql.

Надявам се, че ще работи за вас!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Сканирайте низове с помощта на nodejs в redis

  2. Laravel :Redis Не може да се направи връзка :[tcp://127.0.0.1:6379]

  3. Новак в приложението в реално време - Node.JS + Redis или RabbitMQ -> клиент/сървър как?

  4. Socket.io, Redis Store и IE

  5. Масово поглъщане в Redis