Miroslav Holec. Software & Cloud Architect. Microsoft MVP: Microsoft Azure MCSD, MCSA, MTA. Zvyšujeme výkonnost aplikací s. (Azure) Redis Cache

Podobné dokumenty
Redis a praktické návrhové vzory

Microsoft Azure Workshop

Diagnostika webových aplikací v Azure

Novinky v Microsoft SQL Serveru RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Copyright 2012 EMC Corporation. All rights reserved.

Komunikace systémů pomocí Hradec Králové

UAI/612 - Cloudová Řešení. Návrh aplikací pro cloud

Novinky v Azure pro webové vývojáře

Serverless computing. Aplikace bez serveru s Microsoft Azure. Miroslav Holec. Software & Cloud Architect

Úvod Přetěžování Generika Kolekce Konec. Programování v C# Další jazykové konstrukce. Petr Vaněček 1 / 31

Nimbus Data All Flash Systems

Co je Symantec pcanywhere 12.0? Hlavní výhody Snadné a bezpečné vzdálené připojení Hodnota Důvěra

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

Praktické využití Windows Server 2012 Essentials ve firmě. Jan Pilař, MVP

Elektronická pošta... 3 Historie... 3 Technické principy... 3 Komunikační protokoly... 3 MBOX... 4 Maildir... 4 Jak funguje POP3...

Ondřej Soukup, DAQUAS Radek Žalud, DAQUAS

Da D to t v o é v ty t py IB111: Datové typy

Ing. Michal Martin. MQTT na zařízeních Weintek

Programátorské večery. Tomáš Herceg Microsoft Student Partner

NSS - Cache 5. LECTURE MARTIN TOMASEK

Srovnání SQL serverů. Škálovatelnost a výkon. Express Workgroup Standard Enterprise Poznámky. Počet CPU bez limitu Obsahuje podporu

Kolekce, cyklus foreach

TwinCAT IoT Řešení pro průmysl 4.0

Petr Vlk KPCS CZ. WUG Days října 2016

Databázové systémy Cvičení 5.2

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Windows Server Novinky. Petr Špetlík Cloud & Server PTA

Red Hat Enterprise Virtualization

VISUAL BASIC. Práce se soubory

ZÁLOHA A OBNOVA ABRA GEN

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

ADT/ADS = abstraktní datové typy / struktury

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

ZÁLOHA A OBNOVA ABRA GEN

Datové typy a struktury

Virtualizace jako nástroj snížení nákladů. Periodické opakování nákladů nové verze Licence na pevný počet klientů

Tomáš Kantůrek. IT Evangelist, Microsoft

Monitoring SQL Server, Resource Governor, Tracing SQL Server

Bc. David Gešvindr MSP MCSA MCTS MCITP MCPD

UAI/612 - Cloudová Řešení. Technologie

Komplexní ICT outsourcing

O Apache Derby detailněji. Hynek Mlnařík

9 - Map/filter/reduce OMO. Ing. David Kadleček, PhD

OBSAH: Změny v dokumentu: Verze 1.0

Programování v jazyku C# II. 5.kapitola

Jazyk C# (seminář 3)

ArcGIS Online Subscription

Hana Jedličková Novell Tour Praha,

Řešení ochrany databázových dat

Enterprise funkce SQL Serveru 2016, které jsou od SP1 zdarma

Sledování výkonu aplikací?

Inteligentní řízení strojů s portfoliem u-mation Řešení pro automatizaci a digitalizaci Let s connect. Automatizace a digitalizace

Tovek Tools. Tovek Tools jsou standardně dodávány ve dvou variantách: Tovek Tools Search Pack Tovek Tools Analyst Pack. Připojené informační zdroje

Datové struktury 2: Rozptylovací tabulky

Vzdálený přístup k počítačům

Systémová administrace portálu Liferay

Technická specifikace HW pro rok 2012

Případové studie a kulatý stůl. Dalibor Kačmář, Microsoft

Oracle XML DB. Tomáš Nykodým

Cloud Slovník pojmů. J. Vrzal, verze 0.9

Microsoft SharePoint Portal Server Zvýšená týmová produktivita a úspora času při správě dokumentů ve společnosti Makro Cash & Carry ČR

ABBYY Automatizované zpracování dokumentů

Healtcheck. databáze ORCL běžící na serveru db.tomas-solar.com pro

SMĚRNICE Bezpečnost počítačové sítě a ochrana osobních údajů

MVVM pro desktop i web

B Organizace databáze na fyzické úrovni u serveru Oracle

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

IBM Cloud computing. Petr Leština Client IT Architect. Jak postavit enterprise cloud na klíč IBM Corporation

ReDefine Midrange Storage VNX/VNXe. Václav Šindelář, EMC

Zálohování dat a disaster recovery

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

Informační a komunikační technologie

IT ESS II. 1. Operating Systém Fundamentals

AutoCAD Plant 3D 2018

Datová úložiště v roce 2017 aneb jak si vybrat to správné?

Databáze I. Přednáška 4

SAP a SUSE - dokonalá symbióza s open source. Martin Zikmund Technical Account Manager

Maturitní otázky z předmětu PROGRAMOVÁNÍ

1. Organizace dokumentu. 2. Zabezpečení jako priorita. 3. Cloudová infrastruktura Hybrid Ads

Michal Hroch Server Product Manager Microsoft Česká republika

Lepší efektivita IT & produktivita

Povídejme si chvilku o storage. O HP Storage!

Kurz Databáze. Obsah. Návrh databáze E-R model. Datová analýza, tabulky a vazby. Doc. Ing. Radim Farana, CSc.

Hybridní licencování Microsoft. Martin Albrecht & Jana Chrenová

Koláčky, sezení. Martin Klíma

1 Slovník pojmů Zákaznická data jsou data, která mají být zahrnuta do záložní kopie vytvořené pomocí Služby v závislosti na zálohovacím schématu.

Identifikátor materiálu: ICT-3-16

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Konvergence vývoje aplikací a jejich integrování

VÝZVA K PODÁNÍ NABÍDKY. Ukládání, zálohování a archivace dat

Užitečné rady pro administrátory. IBM Domino/Notes

Zálohování nefunguje... Ondřej Vlach Channel Manager CZ.SK.HU řešte dostupnost!

verze GORDIC spol. s r. o.

Tabulka splnění technických požadavků

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Optimalizace dotazů a databázové transakce v Oracle

Intune a možnosti správy koncových zařízení online

TimescaleDB. Pavel Stěhule 2018

PŘÍPADOVÁ STUDIE ÚŘAD MĚSTSKÉ ČÁSTI PRAHA 3

Výzva na podání nabídek na veřejnou zakázku malého rozsahu

Transkript:

Miroslav Holec Software & Cloud Architect Microsoft MVP: Microsoft Azure MCSD, MCSA, MTA miroslavholec.cz @miroslavholec Zvyšujeme výkonnost aplikací s (Azure) Redis Cache

odkaz.me/redis

Agenda Úvod do Redis Cache Co je Redis Cache Vlastnosti Nástroje pro správu Azure Redis Cache Klíče Pipelining Příklady použití v praxi Dema Redis Cache nástroje a práce s CLI Azure Redis Cache Output Cache / Session State providers

Redis Cache REmote DIctionary Server Open source úložiště strukturovaných dat v operační paměti, použitelné jako databáze, cache a message broker. Podporuje datové struktury jako stringy, listy, sety, hashe a další, nad kterými poskytuje speciální operace. Azure Redis Cache Služba založená na open-source redis cache poskytující přístup k zabezpečené vyhrazené mezipaměti spravované Microsoftem.

Vlastnosti Redis Cache - In-memory úložiště -> vysoká výkonnost (propustnost) - Úložiště typu klíč-hodnota, kde hodnota může být i strukturovaný datový typ - Single-threaded (atomicita operací) - Standardně nepersistentní ale podporuje AOF (append-only files), RDB (snapshots) - Podpora transakcí (izolované, prováděné sekvenčně) - Logické rozdělení na databáze - Clustering - Většina operací řešena s O(1) - Použití jako LRU cache - Pipelining https://redislabs.com/blog/the-proven-redis-performance

Nástroje pro správu Redis Cache.StrongName https://github.com/stackexchange/stackexchange.redis Redis Desktop Manager http://redisdesktop.com - GUI pro Win, vhodný pro procházení klíčů Redsmin http://redsmin.com - Online tool, real-time monitoring - Nástroje pro správu MSOpenTech/redis https://github.com/servicestack/redis-windows - Port Redis na Win (JEN 64-bit) Redis CLI - Obsahuje CLI, Redis-Benchmark - https://github.com/msopentech/redis Redis Benchmark - https://redis.io/topics/benchmarks

DEMO /> Redis Cache CLI a nástroje

Azure Redis Cache Služba založená na open-source redis cacheposkytující přístup k zabezpečené vyhrazené mezipaměti spravované Microsoftem. - Microsoft poskytuje servery dle výkonnosti ve 3 plánech (Basic, Standard, Premium) - Velikost až 53 GB, pomocí clusteru i více - jen premium - Standard a premium s 99,9% SLA - Monitoring, diagnostika a alerty - SSL/non SSL - Škálování (mizerné z principu) - RDB Backup, neumí AOF https://azure.microsoft.com/cs-cz/services/cache

DEMO /> Azure Redis Cache

Klíče v Redis Cache - Klíče jsou stringem o velikosti až 512 MB - Doporučena kratší délka, logické celky oddělené, například article:1:id - Životnost klíče lze získat příkazem TTL [key] - Likvidace klíčů probíhá aktivně i pasivně - Změna životnosti klíče pomocí EXPIRE [key] [seconds] - Debugování pomocí DEBUG OBJECT [key] Všechno o open source Redis Cache: https://redis.io

Použití: Mezipamět - general purpose IN-MEMORY REDIS LOKÁLNÍ DISTRIBUOVANÁ Uložení řetězcové hodnoty - Text, serializovaný objekt (JSON), HTML, velikost do 512 MB... SET [key] [value] - Užitečný je například GETSET [key] [value] (vrací hodnotu před přepsáním) - Lze získat i více hodnot pro více klíčů pomocí MGET [key] [key]... IDatabase redis = _connection.getdatabase(); RedisValue date = redis.stringget("datum"); bool result = redis.stringset("datum", dt.tostring(), TimeSpan.FromSeconds(10);

DEMO /> Output Cache Provider

Pipelining - Redis podporuje pipelining při odeslání více asynchronních požadavků - Dochází k multiplexaci, nečeká se na vyřešení jednoho příkazu aby odešel další - Redukce latence a zvýšení výkonnosti IDatabase redis = _connection.getdatabase(); var task1 = redis.stringgetasync("customer:1"); var task2 = redis.stringgetasync("customer:2"); var customer1 = redis.wait(task1); var customer2 = redis.wait(task2);

Použití: Čítače, počítadla návštěv - Uložený řetězec může být číslo, nad kterým lze provádět dodatečné operace - Nepotřebujeme aktuální hodnotu, pouze řekneme co má redis udělat s tou uloženou IDatabase redis = _connection.getdatabase(); long counter1 = redis.stringincrement("user:1:visits"); - Lze také inkrementovat o určitou hodnotu long counter = redis.stringincrement(key, 5); - Pokud nás nezajímá výsledek, nemusíme na něj čekat redis.stringincrement(key, 1, CommandFlags.FireAndForget);

Použití: Indexování, vyhledávání, autocompletion - Díky vysoké rychlosti lze použít redis cache k vytvoření indexů - Například pokud vyhledáváme v pomalém úložišti na klíčové slovo somekey, můžeme si ID výsledků uchovat pro pozdější hledání. List<Person> data = Database.Articles.Where(x => x.text.contains(value)).tolist(); redis.stringset("search:" + value, JsonConvert.SerializeObject(data.Select(x => x.id).toarray()));... RedisValue searchresult = redis.stringget("search:" + value); List<int> ids = JsonConvert.DeserializeObject<List<int>>(searchResult); List<Person> data2 = Database.All.Where(x => ids.contains(x.id)).tolist();

Použití: Uchování statistik objektů - Redis připouští jako hodnotu kolekci vlastností - HASH - Místo ukládání single value klíčů user:1:visits lze uložit user:1 a visits mít jako vlastnost - Nad vlastnostmi lze provádět různé operace redis.hashset("user:1", new[] { new HashEntry("visits", 0), new HashEntry("likes", 1) });... redis.hashincrement("user:1", "visits"); // přidá návštěvu HashEntry[] stats = redis.hashgetall("user:1"); // vrátí visits a likes

Použití: Fronty a zásobník - Hodnota může být kolekce stringů seřazená dle vložení - LIST - Interní implementace jako LinkedList poskytuje přístup na head / tail s O(1) long count = redis.listrightpush("mail:welcome", "jmeno1@prijmeni.cz"); count = redis.listrightpush("mail:welcome", "jmeno2@prijmeni.cz"); count = redis.listrightpush("mail:welcome", "jmeno3@prijmeni.cz");... string mail = redis.listleftpop("mail:welcome");

Použití: Operace s množinami unikátních prvků - Hodnota může být kolekce unikátních stringů - SET - Velmi rychlé provádění Add/Remove a kontroly existence prvku - Poskytuje množinové operace, např.: průnik / rozdíl redis.setadd("p:1:tags", "novinky"); redis.setadd("p:2:tags", "elektro");... RedisValue[] tags = redis.setmembers("p:1:tags"); RedisValue randomtag = redis.setrandommember("p:1:tags"); bool existstag = redis.setcontains("p:1:tags", "elektro"); RedisValue[] commontags = redis.setcombine(setoperation.union, new RedisKey[] { "p:1:tags", "p:2:tags" });

Použití: Leaderboard - Hodnota může být SET, kde každý prvek má své SCORE, tzv. SORTEDSET - Kolekce je seřazena dle SCORE a nadtouto vlastností lze různě operovat redis.sortedsetadd("top", "884", 76); redis.sortedsetadd("top", "291", 45); redis.sortedsetadd("top", "198", 43); double score = redis.sortedsetincrement("top", "884", 1); RedisValue[] top10 = redis.sortedsetrangebyrank("top", 1, 10); RedisValue[] topbyscore = redis.sortedsetrangebyscore("top", 800, 1000); - I zde máme k dispozici operace průniku nebo rozdílu - Můžeme například udělat průnik objektů a sečíst score dle skupin

Použití: Message broker - Implementace Publish / Subscribe patternu - Publisher publikuje zprávy, které dostávají Subscribers - Není zaručeno, že zpráva skutečně dorazí kam má ISubscriber subscriber = _connection.getsubscriber(); subscriber.subscribe("chat", (channel, json) => { var message = JsonConvert.DeserializeObject<Message>(json); Debug.WriteLine(message.Title); });... subscriber.publish("chat", JsonConvert.SerializeObject(new Message {Title = "Test"}) );

Miroslav Holec Software & Cloud Architect Microsoft MVP: Microsoft Azure MCSD, MCSA odkaz.me/redis Takeaways - Vysoce výkonné úložiště strukturovaných dat - Open-Source, řada nástrojů: CLI, Redsmine - Output Cache a Session State providers - Mnoho praktických využití mimo cachování - Řada operací nad specializovanými typy Q&A - Azure Redis Redis as a service