Co muszę zrobić, to zapisać mapowanie jeden-do-jednego. Zbiór danych składa się z dużej liczby par klucz-wartość tego samego rodzaju (10 mln +). Na przykład można użyć pojedynczej instancji obiektu HashMap w Javie do przechowywania takich danych.Redis - najlepszy sposób na zapisanie dużej mapy (słownika)
Pierwszy sposób to zrobić, aby przechowywać wiele par klucz-wartość, na przykład:
SET map:key1 value1
...
SET map:key900000 value900000
GET map:key1
Drugą opcją jest użycie jednego "hash":
HSET map key1 value
...
HSET map key900000 value900000
HGET map key1
Redis Hasch ma kilka wygodnych poleceń (HMSET
, HMGET
, HGETALL
itd.) I nie zanieczyszczają one przestrzeni kluczy, więc wygląda to na lepszą opcję. Czy są jednak jakieś rozważania dotyczące wydajności lub pamięci podczas korzystania z tego podejścia?
Właściwie jest to zalecane użycie wzorca, aby zaoszczędzić trochę pamięci RAM z Redis - http://redis.io/topics/memory-optimization#using-hashes-to-abstract-a-very-memory Efektywny-czysty-klucz-wartość-sklep-na-od-redis –