Redis. In-memory data structure store. Sergej Kurakin

Similar documents
Redis Ma as, greitas, galingas. Specialiai VilniusPHP

Jason Brelloch and William Gimson

Redis - a Flexible Key/Value Datastore An Introduction

LECTURE 27. Python and Redis

pyredis Documentation

Big Data Management and NoSQL Databases

INFO-H-415 Advanced Databases Key-value stores and Redis. Fatemeh Shafiee Raisa Uku

Harnessing the Full power of Redis. Daniel Magliola

NoSQL: Redis and MongoDB A.A. 2016/17

Classifying malware using network traffic analysis. Or how to learn Redis, git, tshark and Python in 4 hours.

Buffering to Redis for Efficient Real-Time Processing. Percona Live, April 24, 2018

Redis Functions and Data Structures at Percona Live. Dave Nielsen, Developer Redis

Dr. Chuck Cartledge. 19 Nov. 2015

Intro to Redis. A Support Overview

Redisco Documentation

COSC Redis. Paul Moore, Stephen Smithbower, William Lee. March 11, 2013

REDIS: NOSQL DATA STORAGE

Database Solution in Cloud Computing

Amritansh Sharma

redis-py Documentation

Redis as a Time Series DB. Josiah Carlson

Redis Func+ons and Data Structures

Distributed Systems. 29. Distributed Caching Paul Krzyzanowski. Rutgers University. Fall 2014

Come to the TypeScript

How you can benefit from using. javier

redis-py Documentation

The Little Redis Book is licensed under the Attribution-NonCommercial 3.0 Unported license. You should not have paid for this book.

The Little Redis Book is licensed under the Attribution-NonCommercial 3.0 Unported license. You should not have paid for this book.

Scalable Time Series in PCP. Lukas Berk

Ruby on Redis. Pascal Weemaels Koen Handekyn Oct 2013

php-rediscopy Redis~~~ QQ: Blog:

O Reilly RailsConf,

Distributed Cache Service. User Guide. Date

Amazon ElastiCache for Redis. ElastiCache for Redis User Guide API Version

Using Redis As a Time Series Database

JAVA pagrindai Lek. Liudas Drejeris

Managing IoT and Time Series Data with Amazon ElastiCache for Redis

CS December 2017

Distributed Systems. 25. Distributed Caching & Some Peer-to-Peer Systems Paul Krzyzanowski. Rutgers University. Fall 2017

Caching Memcached vs. Redis

whitepaper Using Redis As a Time Series Database: Why and How

Home of Redis. April 24, 2017

REdis: Implementing Redis in Erlang. A step-by-step walkthrough

El. pašto konfigūravimas

Give Your Site A Boost With Memcache. Ben Ramsey September 25, 2009

Agenda. About Me JDriven The case : Westy Tracking Background Architecture Implementation Demo

Agenda. Introduction You Me JDriven The case : Westy Tracking Details Implementation Deployment

MongoDB: Comparing WiredTiger In-Memory Engine to Redis. Jason Terpko DBA, Rackspace/ObjectRocket 1

Parengė ITMM Artūras Šakalys 1

NoSQL Databases Analysis

Table of Contents GEEK GUIDE TAKE CONTROL OF GROWING REDIS NOSQL SERVER CLUSTERS

NoSQL Databases. an overview

Home of Redis. Redis for Fast Data Ingest

THE FLEXIBLE DATA-STRUCTURE SERVER THAT COULD.

Redis as a Reliable Work Queue. Percona University

Introduction to store data in Redis, a persistent and fast key-value database

MySQL InnoDB Cluster. New Feature in MySQL >= Sergej Kurakin

The course modules of MongoDB developer and administrator online certification training:

WWW aplikacijų saugumas 2

Course Content MongoDB

ICALEPS 2013 Exploring No-SQL Alternatives for ALMA Monitoring System ADC

Beyond Relational Databases: MongoDB, Redis & ClickHouse. Marcos Albe - Principal Support Percona

Harness the power of Python magic methods and lazy objects.

Caching with Memcached & APC. Ben Ramsey TEK X May 21, 2010

MySQL. The Right Database for GIS Sometimes

App Engine: Datastore Introduction

羅仲成 ROY LOU 17MEDIA 分散式緩存服務實踐 DISTRIBUTED CACHING SERVICE

Elektroninis.lt šakninių sertifikatų diegimas

CSC326 Persistent Programming i. CSC326 Persistent Programming

Collections (Java) Collections Framework

Brad Dayley. Sams Teach Yourself. NoSQL with MongoDB. SAMS 800 East 96th Street, Indianapolis, Indiana, USA

Help! I need more servers! What do I do?

Masters in Web Development

How to Scale MongoDB. Apr

Jargons, Concepts, Scope and Systems. Key Value Stores, Document Stores, Extensible Record Stores. Overview of different scalable relational systems

Putting together the platform: Riak, Redis, Solr and Spark. Bryan Hunt

asyncio_redis Documentation

Redis Tuesday, May 29, 12

django-redis-cache Documentation

Scaling. Yashh Nelapati Gotham City. Marty Weiner Krypton. Friday, July 27, 12

Transitioning from C# to Scala Using Apache Thrift. Twitter Finagle

C++ programavimo kalba. Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita)

CACHE ME IF YOU CAN! GETTING STARTED WITH AMAZON ELASTICACHE. AWS Charlotte Meetup / Charlotte Cloud Computing Meetup Bilal Soylu October 2013

GridGain and Apache Ignite In-Memory Performance with Durability of Disk

INFO-H-415 Advanced Databases

Trumpai-ilga istorija

Tools for Social Networking Infrastructures

IEMS 5780 / IERG 4080 Building and Deploying Scalable Machine Learning Services

C programavimo kalba. 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() )

W b b 2.0. = = Data Ex E pl p o l s o io i n

So, I have all these containers! Now what?

Amazon ElastiCache 8/1/17. Why Amazon ElastiCache is important? Introduction:

redislite Documentation

CentOS6.5_x86_64 redis redis redis. Redis redis. redis slave server master server. redis. redis. redis. redis redis. replication.

Redis post-exploitation. Pavel Toporkov

From the event loop to the distributed system. Martyn 3rd November, 2011

MONGODB INTERVIEW QUESTIONS

STORING DATA: DISK AND FILES

L23: NoSQL (continued) CS3200 Database design (sp18 s2) 4/9/2018

Scaling with mongodb

Transcription:

Redis In-memory data structure store Sergej Kurakin

Kas yra Redis? Duomenų struktūrų saugykla serverio atmintyje Naudojama kaip: duomenų bazė kešas (angl.: cache) žinučių brokeris (angl.: message broker)

Kaip aš susipažinau Tai buvo prieš keletą metų Projektas su cache kietajame diske per kelis serverius Apribotas iš OS pusės: RHEL4 Apribotas pagal laiką: reikia čia ir dabar PHP 5.2 (o gal PHP 5.1)

Reikalavimai [?] Centralizuotas [?] Restart o atveju neprarasti bent dalies cache [?] Minimalus laikas apšilimui po restart o [?] Patikimas [?] Lengvai diegiamas (RHEL4) [?] Failover galimybė

Ką žiūrėjau? Memcached MemcacheDB MySQL (key-value) MongoDB Redis Kažkas labai sudėtingo diegiant

Reikalavimai [+] Centralizuotas [+] Restart o atveju neprarasti bent dalies cache [+] Minimalus laikas apšilimui po restart o [+] Patikimas [+] Lengvai diegiamas (RHEL4) [+] Failover galimybė

Pasirinkau Redis Lengvai diegiamas Lengvai konfiguruojamas Turi kelis PHP extension ir kelis vanilla php klases Greitas duomenys saugomi RAM Duomenų kopija periodiškai saugoma diske Palaiko lengvai diegiamą replikaciją

Tai kas yra ten tokio unikalaus?

Kokias duomenų struktūras palaiko? strings hashes lists sets bitmaps hyperloglogs geospatial indexes with radius queries sorted sets with range queries

Papildomos galimybės Replication High availability via Redis Sentinel Lua scripting LRU eviction Transactions Automatic partitioning with Redis Cluster On-disk persistence

Informacijos šaltiniai http://redis.io/ https://twitter.com/redisfeed https://twitter.com/antirez https://github.com/antirez/redis https://groups.google.com/forum/?fromgroups%23!forum/redis-db#! forum/redis-db

Truputi faktų Pradėtas kurti 2009 Redis REmote DIctionary Server Išaugo iš logų analitikos LLOOGG Gali palaikyti iki 250 milijonų raktų 1 Milijonas Hello World užims 100MB atminties (32bit) String maksimalus ilgis 512MB

http://techstacks.io/tech/redis

Node.js Java Lua ActionScript C C+ Go D PHP + Haskel Erlang Dart Ruby Python C# Perl

Redis funcionalumo pristatymas

Key-value komandos SET key value GET key DEL key EXPIRE key seconds RENAME key newkey

Key-value komandos SETEX key seconds value SETNX key value MGET key key key MSET key value key value

Key-value su skaičiais INCR key DECR key INCRBY key increment DECRBY key decrement

Kam galima panaudoti? Tipinis Cache - rezultatams, puslapiams. Distributed Locking - kai keli procesai turi sinhronizuoti savo veiksmus. Rate Limiting - kai reiki apriboti API kvietimus, puslapių atidarymus. Symfony 2 gali naudoti sesijų saugojimui tarp kelių serverių. Doctrine ORM gali naudoti Metadata, Query, Result kešavimui.

Hash ai HSET key field value HGET key field HDEL key field HGETALL key HVALS key HKEYS key

Hash ų pavyzdys HSET myhash field1 Value1 HSET myhash field2 Value2 HGETALL myhash field1 Value1 field2 Value2 $var = [ field1 => Value1, field2 => Velue2, ];

Kam galima panaudoti? Objektų Cache kur: atskirus objektų laukus tenka dažniau atnaujinti/apskaičiuoti. skirtingiems tinklapio dalim reikia atskirų laukų

Sąrašai / List LPUSH arba RPUSH key value LPUSHX arba RPUSHX key value LPOP arba RPOP key LINDEX key index LLEN key LRANGE key start stop

Sąrašai / List LREM key count value LSET key index value LTRIM key start stop

Kam galima panaudoti? Eilių organizavimas - bet kokia FIFO ar LIFO eilė. Darbų eilė Paskutiniai sukurti straipsniai, parašyti komentarai, padaryti užsakymai, užsiregistravę vartotojai

Rinkiniai / Set SADD key member SREM key member SCARD key SISMEMBER key member SMEMBERS key

Rinkiniai / Set SPOP key SRANDMEMBER key SDIFF key key SINTER key key SUNION key key

Kam galima panaudoti? Unikalių duomenų saugojimas ir operacijos Pasirinkti atsitiktinai narį iš sąrašo

Rikiuoti rinkiniai / Sorted Set ZADD key score member ZREM key member ZCARD key ZCOUNT key min max ZINCRBY key increment member ZRANK key member ZREVRANK key member

Rikiuoti rinkiniai / Sorted Set ZRANGE key start stop ZREVRANGE key start stop ZRANGEBYSCORE key max min ZREVRANGEBYSCORE key max min

Kam galima panaudoti? Nuolat atnaujinami TOP sąrašai TOP žaidėjai pagal rezultatą TOP žaidėjai pagal padaryta žalą TOP tinklapio straipsniai pagal komentarus

Pub/Sub PUBLISH channel message SUBSCRIBE channel UNSUBSCRIBE channel PSUBSCRIBE pattern PUNSUBSCRIBE pattern

Kam galima panaudoti? Realaus laiko komunikacija Chat Fanout job queue Node.JS + Socket.IO procesų sinchronizavimas Redis Sentinel naudoja vidiniai komunikacijai

Transakcijos!? MULTI EXEC DISCART

Dar komandos SELECT index FLUSHALL FLUSHDB SAVE ir BGSAVE INFO MONITOR

Replikacija Konfigūracinė rinkmena Automatiškai kopijuoja duomenis Automatiškai sinchronizuoja duomenis po prisijugimo SLAVEOF 192.168.1.1 6379 CONFIG set masterauth <master password>

Ko dar neteko panaudoti Redis Sentinel High-Availability sprendimas Labai įdomus sprendimas, kai yra atskiri stebėtojai vadinami Sentinel. Atskiri procesai kurie stebi Redis procesus, automatiškai konfiguruoja replikacija. Atsirado nuo 2.4 versijos. Redis Cluster Automated Sharding Automatikšiai paskirsto įrašus pagal raktą ir užtikrina High-Availability. Turi įdomių apribojimų ir reikalavimų. Atsirado nuo 3.0 versijos. Nusipelno atskiros temos.

Atsiliepimas apie Redis iš mano praktikos Roman Getman: идею с редисом ты придумал вроде, да? Roman Getman: в общем за это тебе спасибо редис супер! Roman Getman: panaudoti Redis tu sugalvojai, taip? Roman Getman: ačiū tau Redis super!

Laikas diskusijai Sergej Kurakin Darbinis paštas: sergej.kurakin@nfq.lt Asmeninis paštas: sergej@kurakin.info https://www.linkedin.com/in/sergejkurakin