Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jaka jest najlepsza strategia synchronizacji danych Redis z MySQL?

Nie musisz niczego hakować;)

Nie jestem do końca pewien, dlaczego potrzebujesz danych na mysql. Gdybym wiedział, może byłaby bardziej odpowiednia odpowiedź. W każdym razie, jako ogólną odpowiedź, możesz użyć powiadomień redis keyspace

Możesz subskrybować polecenia HSET, HMSET, HDEL i DEL na swoich kluczach, aby otrzymywać powiadomienia za każdym razem, gdy klucz zostanie usunięty lub ustawiona lub usunięta wartość skrótu.

Uwaga, jeśli przegapisz jakiekolwiek powiadomienie, będziesz mieć niespójność. Więc od czasu do czasu możesz po prostu użyć polecenia SKANUJ, aby przejść przez wszystkie klucze i sprawdzić w mysql, czy wymagają aktualizacji.

Inną strategią mogłoby być utrzymanie dwóch odrębnych struktur. Jednym z nich byłby skrót z wartościami, a drugi byłby zbiorem ZSET wszystkich wartości posortowanych według sygnatury czasowej aktualizacji. Najlepszym sposobem, aby obie struktury były aktualne, byłoby napisanie dwóch lub trzech skryptów Lua (wstawianie/aktualizacja i usuwanie), które działałyby na haszu i zbiorze zset niepodzielnie.

Następnie możesz po prostu okresowo wysyłać zapytania do ZSET o elementy ze znacznikiem czasu wyższym niż ostatnia operacja synchronizacji, pobierać wszystkie zaktualizowane klucze (obejmuje to usunięte klucze, chyba że chcesz zachować drugi ZSET wyłącznie dla nich), a następnie po prostu pobierz wszystkie elementy według klucza i zsynchronizuj z mysql.

Mam nadzieję, że to zadziała!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Uzyskaj dostęp do zadokowanego redis z hosta systemu Windows

  2. Jak ConnectionMultiplexer radzi sobie z rozłączeniami?

  3. Klawisze Redis nie są wyświetlane podczas korzystania z fasady pamięci podręcznej w Laravel

  4. skoki pamięci i procesora redis

  5. Jak zbiorczo usunąć setki tysięcy kluczy ze znakami specjalnymi w Redis?