Przeprowadzam analizę strumienia danych i publikuję wyniki na kanale Redis. Konsumenci subskrybują te kanały i otrzymują pliki danych w czasie rzeczywistym. Wszystkie wyniki analizy danych historycznych zostaną utracone.Projekt struktury danych Redis do sortowania wartości opartych na czasie
Teraz chcę dodać możliwość przechowywania danych historycznych w Redis, aby konsumenci mogli wyszukiwać dane historyczne (głównie według czasu). Ponieważ wyniki analizy są podzielone według czasu, jaki byłby dobry projekt do przechowywania wyników w Redis?
Bądź ostrożny, że Redis wydajność klucz degraduje się liniowo z liczbą kluczy, które otrzymujesz. Jeśli więc przechowujesz dużą listę (głównie) sąsiednich danych, pobranie N razy zajmuje N razy więcej niż jednoniciowa reprezentacja przedziałów czasowych danych. (Nie jest to problem dla 300 wartości ... ale kilka rzędów wielkości dodanego opóźnienia dla wartości 100k). –
@Nisan - Nie sądzę, że całkowicie rozumiem. Czy podejście (używając zsets poniżej) będzie miało tę karę wydajności, jeśli przechowuję datę co 30 sekund. –
Spróbuj wypełnić listę o żądanym rozmiarze i mierząc czas potrzebny do jej odczytania. Teraz wypróbuj to samo, zapisując całą listę jako ciąg znaków (na przykład jako serializowany obiekt JSON, chociaż z pewnością jest więcej opcji skompresowanych/wydajnych). Z mojego doświadczenia wynika, że w przypadku bardzo dużych list (np. Elementy 50k-500k) jednorodnego typu danych (np. Liczby całkowite z co najwyżej cyframi K), przechowywanie całej listy w postaci ciągów czasowych i rozpakowywanie było około 1000 razy szybsze. po przeczytaniu z Redis. –