sql >> Database >  >> NoSQL >> Redis

Top Redis-gebruiksscenario's op basis van typen gegevensstructuren

Redis, een afkorting van Remote Dictionary Server, is een BSD-gelicentieerde, open-source in-memory key-value datastructuuropslag geschreven in C-taal door Salvatore Sanfillipo en voor het eerst uitgebracht op 10 mei 2009. Afhankelijk van hoe het is geconfigureerd , Redis kan fungeren als een database, een cache of een berichtenmakelaar. Het is belangrijk op te merken dat Redis een NoSQL-databasesysteem is. Dit houdt in dat, in tegenstelling tot SQL (Structured Query Language)-gestuurde databasesystemen zoals MySQL, PostgreSQL en Oracle, Redis geen gegevens opslaat in goed gedefinieerde databaseschema's die tabellen, rijen en kolommen vormen. In plaats daarvan slaat Redis gegevens op in gegevensstructuren, waardoor het zeer flexibel in gebruik is. Met ScaleGrid's hosting voor Redis™* kunt u uw tijdrovende bewerkingen automatiseren voor een groot aantal verschillende Redis-gebruiksscenario's. In deze blog schetsen we de belangrijkste Redis-gebruiksscenario's op basis van de verschillende typen kerngegevensstructuur.

Gegevensstructuren in Redis

Laten we eens kijken naar enkele van de gegevenstypen die door Redis worden ondersteund. In Redis hebben we strings, lijsten, sets, gesorteerde sets en hashes, die we in dit artikel gaan behandelen. Daarnaast hebben we andere datatypes zoals bitmaps, hyperloglogs en geospatiale indexen met radiusquery's en streams. Hoewel er enkele Redis GUI-tools zijn geschreven door de Redis-gemeenschap, is de opdrachtregel verreweg de belangrijkste client, in tegenstelling tot populaire gebruikers van SQL-databases die vaak de voorkeur geven aan GUI-beheersystemen, bijvoorbeeld phpMyAdmin voor MySQL en PgAdmin voor PostgreSQL.

Laten we de gegevenstypen die in Redis voorkomen eens nader bekijken.

Redis Strings

Redis Strings zijn het meest elementaire type Redis-waarde dat wordt gebruikt door alle andere datastructuurtypes, en zijn vrij gelijkaardig aan strings in andere programmeertalen zoals Java of Python. Strings, die elk gegevenstype kunnen bevatten, worden als binair veilig beschouwd en hebben een maximale lengte van 512 MB. Hier zijn een paar handige commando's voor Redis-strings:

Om een ​​string 'john . op te slaan ’ onder een sleutel zoals ‘student’ in Redis, voer het commando uit:

SET “student” “john”

Om de string op te halen, gebruik je het GET-commando zoals weergegeven:

KRIJG "student"

Gebruik het DEL-commando om de tekenreeks in de sleutel te verwijderen:

DEL "student"

Gebruiksscenario's voor Redis-strings

  1. Sessiecache: Veel websites gebruiken Redis Strings om een ​​sessiecache te creëren om hun website-ervaring te versnellen door HTML-fragmenten of pagina's in de cache op te slaan. Omdat gegevens tijdelijk in het RAM worden opgeslagen, maakt dit kenmerk Redis een perfecte keuze als sessiecache. Het is in staat om tijdelijk gebruikersspecifieke gegevens op te slaan, bijvoorbeeld artikelen die zijn opgeslagen in een winkelwagentje in een online winkel, wat van cruciaal belang is omdat uw gebruikers hun gegevens niet verliezen als ze zich afmelden of de verbinding verliezen.
  2. Wachtrijen: Elke toepassing die zich bezighoudt met verkeersopstoppingen, berichten, gegevensverzameling, taakbeheer of routering van verpakkers, zou een Redis-wachtrij moeten overwegen, omdat dit u kan helpen uw wachtrijgrootte te beheren op basis van aankomst- en vertreksnelheid voor distributie van bronnen.
  3. Gebruik en gemeten facturering: Een minder bekende use case voor Redis Strings is de realtime meting voor op verbruik gebaseerde prijsmodellen. Hierdoor kunnen SaaS-platforms die factureren op basis van werkelijk gebruik de activiteit van hun klanten meten, zoals in de telecommunicatie-industrie waar ze sms-berichten of minuten in rekening kunnen brengen.

Redis-lijsten

Lijsten bevatten strings die zijn gesorteerd op hun invoegvolgorde. Met Redis Lists kunt u items toevoegen aan de kop of staart van de lijsten, wat erg handig is voor taken in de wachtrij. Als er meer urgente taken zijn die moeten worden uitgevoerd, kunnen deze voor andere taken met een lagere prioriteit in de wachtrij worden geplaatst. We zouden het LPUSH-commando gebruiken om een ​​element aan de kop of links van de string in te voegen, en het RPUSH-commando om aan de staart of rechts van onze string in te voegen. Laten we een voorbeeld bekijken:

LPUSH-lijst x   # nu is de lijst "x"

LPUSH-lijst y   # nu is de lijst "y", "x"

RPUSH lijst z   # nu is de lijst "y","x","z" (let op hoe het 'z'-element aan het einde van de lijst is toegevoegd door het RPUSH-commando)

Gebruiksscenario's opnieuw weergeven

  1. Sociale netwerksites: Sociale platforms zoals Twitter gebruiken Redis-lijsten om hun tijdlijnen of homepage-feeds te vullen, en kunnen de bovenkant van hun feeds aanpassen met trending tweets of verhalen.
  2. RSS-feeds: Maak nieuwsfeeds van aangepaste bronnen waar u de laatste updates kunt ophalen en laat geïnteresseerde volgers zich abonneren op uw RSS-feed.
  3. Leaderboards: Forums zoals Reddit en andere stemplatforms maken gebruik van Redis-lijsten om artikelen aan het klassement toe te voegen en te sorteren op meest gestemde inzendingen.

Leer hoe u uw eigen Twitter-feed kunt bouwen in onze Caching-tweets met behulp van Node.js, Redis en Socket.io blogpost.

Top #Redis-gebruiksscenario's op basis van typen gegevensstructuurKlik om te tweeten

Redis-sets

Redis-sets zijn krachtige gegevenstypen die krachtige bewerkingen ondersteunen, zoals kruispunten en vakbonden. Ze staan ​​niet in willekeurige volgorde en worden meestal gebruikt wanneer u een audit wilt uitvoeren en relaties tussen verschillende variabelen wilt zien. Sets zijn redelijk snel en ongeacht het aantal elementen dat je hebt opgeslagen, duurt het even lang om items in een set toe te voegen of te verwijderen. Bovendien staan ​​sets geen dubbele sleutels of dubbele leden toe, dus een sleutel die meerdere keren in een set wordt toegevoegd, wordt gewoon genegeerd. Dit wordt aangestuurd door een functie genaamd SADD die duplicatie van meerdere vergelijkbare vermeldingen voorkomt. Het SADD-kenmerk kan worden gebruikt bij het controleren van unieke waarden en kan ook worden gebruikt voor het plannen van taken die op de achtergrond worden uitgevoerd, inclusief cron-taken die geautomatiseerde scripts zijn.

Deze zijn met name handig voor het analyseren van realtime klantgedrag voor uw online winkelsite. Als u bijvoorbeeld een online kledingwinkel heeft, gebruiken Redis Sorted Sets technieken voor het matchen van relaties, zoals vakbonden, kruispunten en aftrekkingen (vaak toegepast in Venn-diagrammen) om een ​​nauwkeurig beeld te geven van het gedrag van de klant. U kunt gegevens ophalen over winkelpatronen tussen geslachten, welke kledingproducten het meest verkopen en welke uren de hoogste verkopen registreren.

Redis sets gebruiksscenario's

  1. E-commerce verkopen analyseren: Veel online winkels gebruiken Redis Sets om klantgedrag te analyseren, zoals zoekopdrachten of aankopen voor een specifieke productcategorie of subcategorie. Een eigenaar van een online boekwinkel kan bijvoorbeeld zien hoeveel klanten medische boeken hebben gekocht in Psychologie.
  2. IP-adres volgen: Redis-sets zijn een geweldige tool voor ontwikkelaars die alle IP-adressen willen analyseren die een specifieke websitepagina of blogpost hebben bezocht, en alle duplicaten voor unieke bezoekers willen negeren met hun SADD-functie.
  3. Ongepaste inhoudsfiltering: Voor elke app die gebruikersinvoer verzamelt, is het een goed idee om inhoudsfiltering voor ongepaste woorden te implementeren, en u kunt dit doen met Redis Sets door woorden die u wilt filteren toe te voegen aan een SET-toets en de SADD-opdracht.

Gesorteerde sets

Zoals de naam al doet vermoeden, zijn Redis Sorted Sets een verzameling strings die een volgorde toewijzen aan je elementen, en zijn een van de meest geavanceerde datastructuren in Redis. Deze zijn vergelijkbaar met Redis-sets, alleen hebben sets geen volgorde, terwijl gesorteerde sets elk lid met een score associëren. Gesorteerde sets staan ​​erom bekend erg snel te zijn, omdat u geordende lijsten en toegangselementen in de kortst mogelijke tijd kunt retourneren.

Gebruiksscenario's voor opnieuw gesorteerde sets

  1. Vraag &antwoord-platforms: Veel Q&A-platforms zoals Stack Overflow en Quora gebruiken Redis Sorted Sets om de best gestemde antwoorden voor elke voorgestelde vraag te rangschikken om ervoor te zorgen dat de inhoud van de beste kwaliteit bovenaan de pagina wordt vermeld.
  2. Scoreborden voor game-apps: Online gaming-apps maken gebruik van Redis Sorted Sets om hun lijsten met hoge scores te behouden, aangezien scores kunnen worden herhaald, maar de strings die de unieke gebruikersgegevens bevatten niet.
  3. Taakplanningsservice: Redis-gesorteerde sets zijn een geweldig hulpmiddel voor een taakplanningsservice, omdat u een score kunt koppelen om de prioriteit van een taak in uw wachtrij te rangschikken. Voor elke taak waarvoor geen score is genoteerd, kunt u de optie GEWICHTEN gebruiken met een standaardwaarde van 1.
  4. Geo Hashing: De geo-indexerings-API van Redis gebruikt een gesorteerde set voor de Geo Hash-techniek waarmee u locaties kunt indexeren op basis van breedte- en lengtegraad, waardoor multidimensionale gegevens worden omgezet in lineaire gegevens.

Redis-hashes

Redis-hashes zijn afbeeldingen tussen tekenreeksvelden en tekenreekswaarden. Dit is het meest gebruikte gegevenstype als u in wezen een container met unieke velden en hun waarden moet maken om objecten weer te geven. Met hashes kunt u een behoorlijk aantal velden opslaan, tot 232 – 1 veldwaarde-paren (meer dan 4 miljard), terwijl ze zeer weinig ruimte innemen. U moet waar mogelijk Redis Hashes gebruiken, omdat u een kleine Redis-instantie kunt gebruiken om miljoenen objecten op te slaan. U kunt naast veel geavanceerde bewerkingen ook eenvoudige hash-opdrachtbewerkingen gebruiken, zoals get, set, exist.

Redis Hashes Use Cases

  1. Gebruikersprofielen: Veel webapplicaties gebruiken Redis Hashes voor hun gebruikersprofielen, omdat ze een enkele hash kunnen gebruiken voor alle gebruikersvelden, zoals naam, achternaam, e-mail, wachtwoord, enz.
  2. Gebruikersberichten: Sociale platforms zoals Instagram maken gebruik van Redis Hashes om alle gearchiveerde gebruikersfoto's of berichten terug te brengen naar één gebruiker. Het hash-mechanisme stelt hen in staat om zeer snel waarden op te zoeken en terug te sturen, de gegevens in het geheugen te passen en gebruik te maken van de persistentie van gegevens in het geval dat een van hun servers uitvalt.
  3. Metrieken voor meerdere huurders opslaan: Multi-tenant-applicaties kunnen Redis-hashes gebruiken om hun product- en verkoopstatistieken vast te leggen en op te slaan op een manier die een solide scheiding tussen elke tenant garandeert, aangezien hashes efficiënt kunnen worden gecodeerd in een zeer kleine geheugenruimte.

Wie gebruikt Redis?

Redis heeft een enorm marktaandeel gevonden in de reis- en horecasector, communityforums, sociale media, SaaS en e-commerce, om er maar een paar te noemen. Enkele van de toonaangevende bedrijven die Redis gebruiken, zijn Pinterest, Uber, Slack, Airbnb, Twitter en Stack Overflow. Hier zijn enkele statistieken over de populariteit van Redis vandaag:

  • 4.107 bedrijven meldden dat ze Redis op StackShare gebruiken
  • 8759 ontwikkelaars gaven aan Redis op StackShare te gebruiken
  • 38.094 GitHub-gebruikers hebben Redis een ster gegeven
  • #8 gerangschikte database op DB-Engines met een score van 144,08


  1. Tweets in cache plaatsen met Node.js, Redis en Socket.io

  2. Een overzicht van ACID-transacties met meerdere documenten in MongoDB en hoe ze te gebruiken

  3. Een handleiding voor ontwikkelaars voor MongoDB-replicasets

  4. Django Channels Error - Kan BACKEND 'asgi_redis.RedisChannelLayer' niet importeren