Przeczytałem this article, który wzmiankuje przechowywanie 1Million kluczy w trybie redis będzie korzystać z 17 GB pamięci. Jednak po przełączeniu na hasze masując je po 1k każdy (np. HSET "mediabucket:1155" "1155315" "939"
), można przechowywać 1M w 5GB, co jest dość dużym oszczędności.HSET kontra użycie pamięci SET?
Czytam redis memory-optimization, ale nie całkiem rozumiem różnicę. Mówi on, że HGET nie są w pełni O (1), ale wystarczająco blisko i wspomina o większym wykorzystaniu procesora podczas używania hsetów. Nie rozumiem, dlaczego byłoby więcej użycia procesora (pewny czas wymiany miejsca, ale jak/co?). Wymienia kodowanie, ale nie kodowanie.
Wymienia także tylko ciąg znaków, ale nie mam pojęcia, co oznacza tylko ciąg. Czy to jest pole mieszania? Czy to oznacza hash? Nie widzę nic na ten temat w HSET. Co dokładnie byłoby zakodowane i dlaczego kodowanie byłoby bardziej wydajne niż użycie SET?
Jak to jest możliwe HSET "mediabucket:1155" "1155315" "939"
jest bardziej wydajny niż SET "mediabucket:1155315" "939"
? Mniej danych w SET (1155315 i d 1155 zamiast 1155315). Osobiście próbowałbym używać kluczy binarnych, ale nie sądzę, że ma to związek z tym, dlaczego HSET są bardziej wydajne.
EDIT:
Krzyż wysłana na listę mailingową Redis-db, a także: https://groups.google.com/d/topic/redis-db/90K3UqciAx0/discussion
Niezłe wyjaśnienie. –