sql >> Databáze >  >> NoSQL >> Redis

Je to dobrý případ použití pro Redis na ServiceStack REST API?

Na co myslet při navrhování aplikace NoSQL Redis

1) Pro správný vývoj v Redis byste měli více přemýšlet o tom, jak byste strukturovali vztahy ve vašem programu C#, tj. s třídami kolekce C#, spíše než o relačním modelu určeném pro RDBMS. Lepší způsob myšlení by bylo myslet více na ukládání dat, jako je databáze dokumentů, spíše než na tabulky RDBMS. V podstatě všechno se v Redis blobuje prostřednictvím klíče (indexu), takže stačí zjistit, jaké jsou vaše primární entity (tj. agregované kořeny), které by byly uchovány ve vlastním „jmenném prostoru klíče“, nebo zda jde o neprimární entitu, tj. metadata, která by měla zůstat zachována s nadřazenou entitou.

Příklady Redis jako primárního úložiště dat

Zde je dobrý článek, který vás provede vytvořením jednoduché blogovací aplikace pomocí Redis:

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

Můžete se také podívat na zdrojový kód RedisStackOverflow pro další reálný příklad pomocí Redis.

V podstatě byste museli ukládat a načítat položky každého typu zvlášť.

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

Způsob, jakým ukládáte vztah mezi entitami, využívá sady Redis, např.:vztah Uživatelé/Sledovatelé můžete ukládat koncepčně pomocí:

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

Redis je bez schématu a idempotentní

Ukládání ID do sad redis je idempotentní, tj. můžete přidat watcherId1 na stejnou sadu vícekrát a bude mít pouze jeden výskyt. To je hezké, protože to znamená, že nemusíte nikdy kontrolovat existenci vztahu a můžete volně přidávat související ID, jako by nikdy neexistovala.

Související:Zápis nebo čtení do kolekce Redis (např. Seznam), která neexistuje, je stejné jako zápis do prázdné kolekce, tj. seznam se vytvoří za běhu, když přidáte položku do seznamu a přistupujete k ne existující seznam jednoduše vrátí 0 výsledků. Toto je výhra bez tření a produktivity, protože nemusíte předem definovat svá schémata, abyste je mohli používat. I když v případě potřeby Redis poskytuje operaci EXISTS k určení, zda existuje klíč nebo operaci TYPE, abyste mohli určit jeho typ.

Vytvořte své vztahy/indexy svých zápisů

Jedna věc, kterou je třeba si zapamatovat, je, že v Redis nejsou žádné implicitní indexy, budete obecně muset nastavit své indexy/vztahy potřebné pro čtení během vašich zápisů. V zásadě musíte předem promyslet všechny požadavky na dotazy a zajistit, abyste v době zápisu nastavili potřebné vztahy. Výše uvedený zdrojový kód RedisStackOverflow je dobrým příkladem, který to ukazuje.

Poznámka:Poskytovatel ServiceStack.Redis C# předpokládá, že máte jedinečné pole s názvem Id to je jeho primární klíč. Pomocí ModelConfig.Id() jej můžete nakonfigurovat tak, aby používal jiné pole mapování konfigurace.

Redis Persistance

2) Redis podporuje 2 typy režimů persistence přednastavených RDB a Append Only File (AOF). RDB zapisuje rutinní snímky, zatímco soubor Append Only File funguje jako transakční deník zaznamenávající všechny změny mezi snímky – doporučuji přidávat oba, dokud nebudete spokojeni s tím, co každý dělá a co vaše aplikace potřebuje. Celou perzistenci Redis si můžete přečíst na http://redis.io/topics/persistence.

Poznámka Redis také podporuje triviální replikaci, o které si můžete přečíst více na:http://redis.io/topics/replication

Redis miluje RAM

3) Vzhledem k tomu, že Redis pracuje převážně v paměti, nejdůležitějším zdrojem je to, že máte dostatek paměti RAM pro uložení celé datové sady v paměti + vyrovnávací paměti pro snímky na disk. Redis je velmi efektivní, takže i malá instance AWS bude schopna zvládnout velkou zátěž – co chcete, je mít dostatek paměti RAM.

Vizualizace dat pomocí uživatelského rozhraní Redis Admin

Nakonec, pokud používáte klienta ServiceStack C# Redis, doporučuji nainstalovat uživatelské uživatelské rozhraní Redis Admin, které poskytuje pěkný vizuální pohled na vaše entity. Živé demo můžete vidět na:http://servicestack.net/RedisAdminUI/AjaxClient/




  1. Automaticky generované pole pro MongoDB pomocí Spring Boot

  2. Agregace MongoDB:Počítání různých polí

  3. PyMongo -- iterace kurzoru

  4. Při používání fasády mezipaměti v Laravelu se klíče Redis nezobrazují