Redis nie jest przeznaczony do przechowywania bardzo dużych obiektów. Nie powinieneś przechowywać całej swojej kolekcji w jednym ciągu w Redis, ale raczej użyć listy Redis lub ustawić jako kontener dla swoich obiektów.
Co więcej, format zalewy nie jest zoptymalizowany pod kątem miejsca ... potrzebujesz bardziej kompaktowego formatu. Bufory protokołów, MessagePack, a nawet zwykły JSON są prawdopodobnie lepsze do tego. Powinieneś rozważyć zastosowanie lekkiego algorytmu kompresji przed przechowywaniem danych (takich jak Snappy, LZO, Quicklz, LZF itp.).
Wreszcie wydajność jest prawdopodobnie związana z siecią. Na moim komputerze pobranie obiektu o wielkości 20 MB z Redis zajmuje 85 ms (nie 3 sekundy). Teraz, jeśli uruchomię ten sam test na zdalnym serwerze, zajmie to 1,781 sekundy, co jest oczekiwane w tej sieci 100 Mbit/s. Czas trwania jest w pełni zależny od przepustowości sieci.
Ostatni punkt:upewnij się, że korzystasz z najnowszej wersji Redis — wprowadzono szereg optymalizacji, aby poradzić sobie z dużymi obiektami.