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

Szybsza metoda przenoszenia danych redis do MySQL

Czy jest inny sposób na zrzucanie dużych zbiorów danych z Redis do MySQL?

Redis ma możliwość (za pomocą bgsave) wygenerowania zrzutu danych w sposób nieblokujący i spójny.

https://github.com/sripathikrishnan/redis-rdb-tools

Możesz użyć dobrze znanego pakietu Sripathi Krishnana, aby przeanalizować plik zrzutu redis (RDB) w Pythonie i wypełnić instancję MySQL w trybie offline. Możesz też przekonwertować zrzut Redis do formatu JSON i pisać skrypty w dowolnym języku, w którym chcesz zapełnić MySQL.

To rozwiązanie jest interesujące tylko wtedy, gdy chcesz skopiować pełne dane instancji Redis do MySQL.

Czy Redis ma jakiś system wyzwalania, którego mogę użyć, aby uniknąć cronów, takich jak system kolejek?

Redis nie ma koncepcji wyzwalacza, ale nic nie stoi na przeszkodzie, aby publikować zdarzenia w kolejkach Redis za każdym razem, gdy coś musi zostać skopiowane do MySQL. Na przykład zamiast:

# Add an item to a user shopping cart
RPUSH user:<id>:cart <item>

możesz wykonać:

# Add an item to a user shopping cart
MULTI
RPUSH user:<id>:cart <item>
RPUSH cart_to_mysql <id>:<item>
EXEC

Blok MULTI/EXEC sprawia, że ​​jest on atomowy i spójny. Następnie wystarczy napisać małego demona czekającego na elementy kolejki cart_to_mysql (za pomocą poleceń BLPOP). Dla każdego elementu usuniętego z kolejki demon musi pobrać odpowiednie dane z Redis i wypełnić instancję MySQL.

Redis błędnie przechowuje dane w pliku, więc czy możliwe jest przechowywanie tych danych bezpośrednio w bazie danych MySQL?

Nie jestem pewien, czy rozumiem pytanie. Ale jeśli użyjesz powyższego rozwiązania, opóźnienie między aktualizacjami Redis i aktualizacjami MySQL będzie dość ograniczone. Więc jeśli Redis zawiedzie, stracisz tylko ostatnie operacje (w przeciwieństwie do rozwiązania opartego na zadaniach cron). Oczywiście nie jest możliwe uzyskanie 100% spójności w propagacji danych.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis łączy się z więcej niż jednym adresem IP

  2. Nie można połączyć się z redis za pomocą jedis

  3. Nie można załadować pliku lub zestawu System.Runtime.CompilerServices.Unsafe

  4. Odsłanianie Redisa za pomocą kontrolera Ingress Nginx

  5. Redis Expire nie działa