Redis przechowuje klucze wskazujące na wartości. Klucze mogą mieć dowolną wartość binarną do rozsądnego rozmiaru (zaleca się stosowanie krótkich ciągów ASCII w celu zapewnienia czytelności i debugowania). Wartości są jednym z pięciu rodzimych typów danych Redis.
1. ciągi - sekwencja binarnych bezpiecznych bajtów do 512 MB
2. kreski - zbiór par kluczowych wartości
3. listy - kolekcja ciągów w kolejności wstawiania
4. zestawy - kolekcja unikatowych ciągów znaków bez uporządkowania
5. posortowane zestawy - zbiór unikatowych ciągów uporządkowanych według punktacji zdefiniowanej przez użytkownika
Smyczki
Ciąg Redis jest sekwencją bajtów.
Ciągi znaków w Redis są binarnie bezpieczne (co oznacza, że mają znaną długość, której nie określają żadne specjalne znaki kończące), dzięki czemu można przechowywać w jednym łańcuchu wszystko do 512 megabajtów.
Ciągi to kanoniczna koncepcja „magazynu wartości kluczowych”. Masz klucz wskazujący na wartość, gdzie zarówno klucz, jak i wartość są ciągiem tekstowym lub binarnym.
Wszystkie możliwe operacje na łańcuchach znajdują się na stronie
http://redis.io/commands/#string
Hashes
Skrót Redis to zbiór par kluczowych wartości.
Skrót Redis zawiera wiele par klucz-wartość, przy czym każdy klucz i wartość jest łańcuchem. Skróty Redis nie obsługują bezpośrednio wartości złożonych (co oznacza, że pole skrótu nie może mieć wartości listy, zestawu lub innego skrótu), ale można użyć pól skrótu, aby wskazać inne wartości złożone najwyższego poziomu. Jedyną specjalną operacją, jaką można wykonać na wartościach pól skrótu, jest przyrost atomowy / zmniejszenie zawartości liczbowej.
Hasła Redis można myśleć na dwa sposoby: jako bezpośrednią reprezentację obiektu i sposób kompaktowego przechowywania wielu małych wartości.
Bezpośrednie reprezentacje obiektów są łatwe do zrozumienia. Obiekty mają nazwę (klucz skrótu) i zbiór kluczy wewnętrznych z wartościami. Zobacz przykład poniżej, na przykład.
Przechowywanie wielu małych wartości za pomocą skrótu jest sprytną techniką masowego przechowywania danych Redis. Gdy skrót ma niewielką liczbę pól (~ 100), Redis optymalizuje pamięć i efektywność dostępu do całego skrótu. Optymalizacja magazynu skrótów w Redis wzbudza ciekawe zachowanie: bardziej efektywne jest posiadanie 100 skrótów z 100 kluczami wewnętrznymi i wartościami niż 10.000 kluczy najwyższego poziomu wskazujących wartości ciągów. Używanie skrótów Redis w celu zoptymalizowania przechowywania danych w ten sposób wymaga dodatkowego narzutu programistycznego do śledzenia, gdzie kończą się dane, ale jeśli twoje przechowywanie danych opiera się głównie na łańcuchach, możesz zaoszczędzić dużo narzutu pamięci za pomocą tej jednej dziwnej sztuczki.
Aby zapoznać się ze wszystkimi możliwymi operacjami na hashach, zobacz dokumentację hash
Listy
Listy Redis działają jak listy połączone.
Możesz wstawiać, usuwać i przeglądać listy zarówno na początku, jak i na końcu listy.
Korzystaj z list, gdy chcesz zachować wartości w kolejności, w której zostały wstawione. (Redis oferuje opcję wstawiania w dowolne miejsce na liście, jeśli zajdzie taka potrzeba, ale wydajność wstawiania obniży się, jeśli wstawisz daleko od pozycji początkowej).
Listy Redis są często używane jako kolejki producent / konsument. Wstaw elementy do listy, a następnie wyskocz elementy z listy. Co się stanie, jeśli Twoi klienci spróbują wyskoczyć z listy bez elementów? Możesz poprosić Redis, aby poczekał na pojawienie się elementu i zwrócił go natychmiast po dodaniu. Dzięki temu Redis staje się systemem kolejki wiadomości / zdarzenia / zadania / zadania / powiadomienia w czasie rzeczywistym.
Możesz atomowo usuwać elementy z dowolnego końca listy, umożliwiając traktowanie dowolnej listy jako stosu lub kolejki.
Możesz także utrzymywać listy o stałej długości (kolekcje ograniczone), przycinając listę do określonego rozmiaru po każdym wstawieniu.
Wszystkie możliwe operacje na listach znajdują się w dokumentacji list
Zestawy
Zestawy Redis są zestawami.
Zestaw Redis zawiera unikalne nieuporządkowane ciągi Redis, przy czym każdy ciąg istnieje tylko raz na zestaw. Jeśli dodasz ten sam element dziesięć razy do zestawu, pojawi się on tylko raz. Zestawy świetnie nadają się do leniwego zapewnienia, że coś istnieje przynajmniej raz, bez obawy o gromadzenie się duplikatów i marnowanie miejsca. Możesz dodać ten sam ciąg tyle razy, ile chcesz, bez konieczności sprawdzania, czy już istnieje.
Zestawy są szybkie do sprawdzania członkostwa, wstawiania i usuwania członków w zestawie.
Zestawy mają wydajne operacje ustawiania, tak jak można się spodziewać. Możesz wziąć łączenie, przecięcie i różnicę wielu zestawów jednocześnie. Wyniki można albo zwrócić dzwoniącemu, albo zapisać w nowym zestawie do późniejszego wykorzystania.
Zestawy mają stały dostęp do kontroli członkostwa w czasie (w przeciwieństwie do list), a Redis ma nawet wygodne usuwanie i zwracanie losowych członków („wyskakuje losowy element z zestawu”) lub losowy powrót członków bez wymiany („daj mi 30 unikalnych losowo wybranych użytkowników ”) lub zamiennie („ daj mi 7 kart, ale po każdej selekcji włóż kartę z powrotem, aby można było ponownie spróbować ”).
Aby zapoznać się ze wszystkimi możliwymi operacjami na zestawach, zobacz dokumentację dotyczącą zestawów .
Posortowane zestawy
Zestawy posortowane Redis to zestawy z uporządkowaniem zdefiniowanym przez użytkownika.
Dla uproszczenia można myśleć o posortowanym zestawie jako drzewie binarnym z unikalnymi elementami. (Sortowane zestawy Redis są tak naprawdę listami pomijanymi ). Kolejność sortowania elementów jest określona przez wynik każdego elementu.
Posortowane zestawy są nadal zestawami. Elementy mogą pojawiać się tylko raz w zestawie. Element, dla celów wyjątkowości, jest definiowany przez jego zawartość ciągu. Wstawienie elementu „jabłko” z wynikiem sortowania 3, a następnie wstawienie elementu „jabłko” z wynikiem sortowania 500 daje jeden element „jabłko” z wynikiem sortowania 500 w posortowanym zestawie. Zestawy są unikalne tylko na podstawie danych, a nie na podstawie par (ocena, dane).
Upewnij się, że Twój model danych opiera się na zawartości ciągu, a nie na wyniku elementu za wyjątkowość. Wyniki mogą się powtarzać (lub nawet zero), ale po raz ostatni elementy zestawu mogą istnieć tylko raz dla każdego posortowanego zestawu. Na przykład, jeśli spróbujesz zapisać historię każdego logowania użytkownika jako posortowany zestaw, ustawiając wynik jako epokę logowania i wartość identyfikatora użytkownika, w końcu zapiszesz tylko ostatnią epokę logowania dla wszystkich użytkowników. Twój zestaw powiększy się do rozmiaru twojej bazy użytkowników, a nie o pożądany rozmiar logowania użytkownika *.
Elementy są dodawane do zestawu z wynikami. Możesz zaktualizować wynik dowolnego elementu w dowolnym momencie, wystarczy dodać element ponownie z nowym wynikiem. Wyniki są reprezentowane przez podwójne zmiennoprzecinkowe, więc w razie potrzeby możesz określić szczegółowość znaczników czasu o wysokiej precyzji. Wiele elementów może mieć ten sam wynik.
Możesz pobrać elementy na kilka różnych sposobów. Ponieważ wszystko jest posortowane, możesz poprosić o elementy zaczynające się od najniższych wyników. Możesz poprosić o elementy zaczynające się od najwyższych wyników („na odwrót”). Możesz poprosić o elementy według ich wyniku sortowania w kolejności naturalnej lub odwrotnej.
Aby zapoznać się ze wszystkimi możliwymi operacjami na posortowanych zestawach, zobacz dokumentację posortowanych zestawów.