Díky moc za článek. Redis je opravdu výborný. Pokud bude další díl, přimlouval bych se za zmínění PUB/SUB (úžasná věc zejména ve spojení s keyspace notification). Velmi zajímavý je také nový typ Stream, se kterým lze velmi jednoduše realizovat time series databázi. A Redis je opravdu hodně rychlý - lze vyzkoušet pomocí redis-benchmark (součást instalace).
Co takhle "spolehlivá"? On samotný Redis je celkem bez problémů (jen není HA, což ale platí i o MySQL, nebo PostgreSQL) ale když se k tomu přidá Sentinel, tak je to HA z mateřské školky, snižující konzistenci dat vůči single server řešení (svoje data bych tomu nesvěřil, leda tak jako cache). U ostatních databází manuály alespoň nepředstírají, že HA je jednoduché.
Další problém mám s příkazem "CONFIG" a nemožností ho úplně zakázat uživateli databáze. Prostě pro vývojáře dobrý, ale nechtějte po Operations aby vám to spravoval, protože nemůže převzít zodpovědnost za bezpečnost databáze v případě diskreditace části aplikace. Tohle řeší ostatní databáze nějakým systémem oprávnění a uživatelů.
Ne, psal jsem že PostgreSQL a MySQL také nejsou HA. Ale nesnaží se tvářit, že jsou. Sentinel je jen zdání HA, celý protokol okolo Sentinelu je jeden velký race condition. Teď zpět k dotazu co je databáze: je to především software. Jeho kvalita se měří tím, jak dobře dělá to co o sobě v dokumentaci tvrdí, že dělá, a jaké jsou standardy v dané třídě software. Schválně, když se vás někdo zeptá jakou použijete databázi, jak dlouho budete přemýšlet o SQLite? No a Redis absencí oprávnění a nemožností zakázat CONFIG, se staví do podobného use-case. Prostě jako "knihovna" implementovaná samostatným procesem dobrý, ale jako systém na bezpečné ukládání strukturovaných dat nic moc.
1) ano, existuje MSET, který dokonce pracuje atomicky https://redis.io/commands/mset
2) popravdě netuším, jestli se chystají změny, ale současný Redis je licencován pod BSD, takže (z mého pohledu) je to ok (zatím).
Problémem u Redisu (zatím jen některých modulů) je tzv. Commons Clause, která z toho dělá nesvobodný software. Viz také Recent licensing updates .
Už vznikla iniciativa GoodFORM, která udržuje pod původní licencí moduly postižené Commons Clause (tzn. aby je bylo možné nadále svobodně používat).
Doporučuji si na tohle dávat pozor -- název "Commons Clause" je zavádějící a rovněž tento přístup parazituje na dobrém jménu licence, ke které je "Commons Clause" připojena (a jejíž smysl převrací).
Nemělo by (pokud je to nějaká slušná distribuce jako Debian, Fedora atd., která necpe uživatelům nesvobodný software).
Od toho jsou pravidla jako https://www.debian.org/social_contract která ti zaručují, že co si nainstaluješ přes svoji distribuci, bude licenčně v pořádku.
predpokladam, ze kdyz jsou stringy jen binarni stream, neni problem do Redisu ukladat i obrazky a dalsi binarni data? Je vlastne vubec rozumne mit napriklad reseni s casti dat v PG (kde chci mit kontroly na urovni relacni DB) a binarni data typu obrazku v Redisu? Nebo je to principielne blbost?
Ano, používám to tak a mám nad tím jednu větší aplikaci - dlouhodobý archív je v PgSQL, krátkodobá cache je v Redisu (a střednědobá je v InfluxDB).
Pro PostgreSQL existuje i modul redis_fwd, pomocí kterého si pak můžete data v Redisu namapovat do SQL a pracovat s nimi přímo SQLkem...
> Pro PostgreSQL existuje i modul redis_fwd, pomocí kterého si pak můžete data v Redisu namapovat do SQL a pracovat s nimi přímo SQLkem...
Ale v čem je potom ta výhoda? V omezení velikosti dat v Postgres? Protože ve výkonu ta výhoda asi nebude, jelikož bude úzké hrdlo nejspíš stejně Postgres a dotaz se nezrychlí?
Naše aplikace jede primárně do Redisu přímo, kde má vysokoobrátková data a odtud se distribuují dát do Pg a Influxu (a PgSQL z nich byl na prášky). Jen jsem to uváděl jako možnost, že si Redis můžu přimapovat i do PgSQL a pracovat s určitým omezením s Redisem i skrz Postgres a "normální SQL".
Dokonce to používáme jako bránu. Mém aktuální data v Redisu a nějaký jiný systém, které umí jen ODBC, tak přistupuje k aktuálním datům tak, že jedna instalace PgSQL slouží jako překladač do Redisu (dneska už existuje přímo ODBC driver pro Redis, ale tenkrát, kdy se to uvedlo v život, tak nebyl).