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

redis pro protokolování

Musíte mít na paměti, že Redis je databáze v paměti (i když může uchovávat data na disku). Data, která vložíte do Redis, se musí vejít do paměti.

Návrh v článku, který zmiňujete, se týká použití Redis jako distribuovaného systému front. Pracovní procesy vyřazují položky z fronty a zapisují je na disk, takže v paměti Redis není tolik položek. Tento návrh má chybu:pokud pracovní procesy nemohou zapisovat data dostatečně rychle na disk, spotřeba paměti Redis exploduje - takže musí být omezena konfigurací (parametr Redis maxmemory) nebo softwarem (oříznout frontu při vkládání nebo vyprázdnit fronta, když je plná).

Nyní váš návrh ve skutečnosti nefunguje, protože všechna data, která zapíšete do Redis, budou uchována v paměti (i když jsou uložena na disku samotným Redisem).

Dalším bodem je, že nemůžete dotazovat Redis. Redis není relační databáze, nepodporuje žádný mechanismus ad-hoc dotazů, pouze příkazy zahrnující dříve definované přístupové cesty. Pokud chcete vyhledávat data s různými parametry, musíte předvídat všechna možná hledání a vytvořit příslušné datové struktury (množinu, seřazené množiny atd.) při vkládání.

Pro váš případ použití bude pravděpodobně mnohem vhodnější jiný obchod (MongoDB nebo relační databáze).



  1. MongoDB skupina po hodině

  2. Agregační filtr po $lookup

  3. Jak mohu v MongoDB mapreduce sloučit objekt hodnot?

  4. MassTransit sága s Redis persistence dává Method Accpet nemá implementační výjimku