Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Czy to dobry przypadek użycia dla Redis w interfejsie API REST ServiceStack?

O czym należy pomyśleć przy projektowaniu aplikacji NoSQL Redis

1) Aby poprawnie programować w Redis, powinieneś pomyśleć więcej o tym, jak ustrukturyzować relacje w swoim programie C#, tj. z klasami kolekcji C#, a nie z modelem relacyjnym przeznaczonym dla RDBMS. Lepszym sposobem myślenia byłoby zastanowienie się bardziej nad przechowywaniem danych, takim jak baza danych dokumentów, a nie tabelami RDBMS. Zasadniczo wszystko jest blobowane w Redis za pomocą klucza (indeksu), więc wystarczy ustalić, jakie są twoje podstawowe jednostki (tj. Zagregowane korzenie), które zostaną zachowane we własnej „przestrzeni nazw kluczy” lub czy jest to jednostka niepodstawowa, tj. po prostu metadane, które powinny zostać utrwalone wraz z jednostką nadrzędną.

Przykłady Redis jako głównego magazynu danych

Oto dobry artykuł, który opisuje tworzenie prostej aplikacji do blogowania za pomocą Redis:

http://www.servicestack.net/docs/redis-client/designing-nosql-database

Możesz również spojrzeć na kod źródłowy RedisStackOverflow, aby znaleźć inny przykład ze świata rzeczywistego przy użyciu Redis.

Zasadniczo musisz przechowywać i pobierać przedmioty każdego typu osobno.

var redisUsers = redis.As<User>();
var user = redisUsers.GetById(1);
var userIsWatching = redisUsers.GetRelatedEntities<Watching>(user.Id);

Sposób, w jaki przechowujesz relacje między podmiotami, wykorzystuje zestawy Redis, np. możesz koncepcyjnie przechowywać relacje Użytkownicy/Obserwatorzy za pomocą:

SET["ids:User>Watcher:{UserId}"] = [{watcherId1},{watcherId2},...]

Redis jest pozbawiony schematu i idempotentny

Przechowywanie identyfikatorów w zestawach redis jest idempotentne, tj. możesz dodać watcherId1 do tego samego zestawu wiele razy i zawsze wystąpi tylko raz. To miłe, ponieważ oznacza to, że nigdy nie musisz sprawdzać istnienia związku i możesz swobodnie dodawać powiązane identyfikatory, jakby nigdy nie istniały.

Powiązane:pisanie lub czytanie do kolekcji Redis (np. Listy), która nie istnieje, jest tym samym, co pisanie do pustej kolekcji, tj. Lista jest tworzona w locie, gdy dodajesz element do listy podczas uzyskiwania dostępu do nie- istniejąca lista po prostu zwróci 0 wyników. Jest to bezproblemowa i wydajna wygrana, ponieważ nie musisz z góry definiować swoich schematów, aby z nich korzystać. Chociaż powinieneś to zrobić, Redis udostępnia operację EXISTS, aby określić, czy klucz istnieje, czy operację TYPE, dzięki czemu możesz określić jego typ.

Twórz swoje relacje/indeksy na swoich zapisach

Jedną rzeczą do zapamiętania jest to, że w Redis nie ma niejawnych indeksów, zazwyczaj będziesz musiał skonfigurować indeksy/relacje potrzebne do samodzielnego czytania podczas pisania. Zasadniczo musisz z góry przemyśleć wszystkie wymagania dotyczące zapytań i upewnić się, że skonfigurowałeś niezbędne relacje w czasie pisania. Powyższy kod źródłowy RedisStackOverflow jest dobrym przykładem, który to pokazuje.

Uwaga:dostawca ServiceStack.Redis C# zakłada, że ​​masz unikalne pole o nazwie Id to jest jego klucz podstawowy. Możesz skonfigurować go tak, aby używał innego pola za pomocą ModelConfig.Id() mapowanie konfiguracji.

Trwałość Redis

2) Redis obsługuje 2 typy trybów trwałości gotowych do użycia RDB i dołączania tylko pliku (AOF). RDB zapisuje rutynowe migawki, podczas gdy plik Append Only File działa jak dziennik transakcji, rejestrujący wszystkie zmiany między migawkami - polecam dodawać oba, dopóki nie poczujesz się komfortowo z tym, co każdy z nich robi i czego potrzebuje Twoja aplikacja. Możesz przeczytać całą trwałość Redis na http://redis.io/topics/persistence.

Uwaga Redis obsługuje również trywialną replikację, o której możesz przeczytać więcej na:http://redis.io/topics/replication

Redis kocha pamięć RAM

3) Ponieważ Redis działa głównie w pamięci, najważniejszym zasobem jest to, że masz wystarczająco dużo pamięci RAM, aby przechowywać cały zestaw danych w pamięci + bufor na potrzeby wykonywania migawek na dysku. Redis jest bardzo wydajny, więc nawet mała instancja AWS będzie w stanie obsłużyć duże obciążenie — to, czego chcesz szukać, to wystarczająca ilość pamięci RAM.

Wizualizacja danych za pomocą interfejsu administratora Redis

Wreszcie, jeśli używasz klienta Redis ServiceStack C#, polecam zainstalowanie interfejsu administratora Redis, który zapewnia ładny wizualny widok twoich jednostek. Możesz zobaczyć demo na żywo pod adresem:http://servicestack.net/RedisAdminUI/AjaxClient/




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zaktualizować redis po aktualizacji bazy danych?

  2. Jak naprawić klucze Redis serializowane za pomocą Java?

  3. Kolejność wykonywania potokowa Redis

  4. Konwencja nazewnictwa i prawidłowe znaki dla klucza Redis

  5. Dopasowanie skanowania Redis