Zoeken…


Opmerkingen

We hebben de basis- en meest gebruikte bewerkingen in node_redis behandeld. U kunt deze module gebruiken om de volledige kracht van Redis te benutten en echt geavanceerde Node.js-apps te maken. Met deze bibliotheek kun je veel interessante dingen bouwen, zoals een sterke caching-laag, een krachtig Pub / Sub-berichtensysteem en meer. Bekijk de documentatie voor meer informatie over de bibliotheek.

Ermee beginnen

node_redis, zoals je misschien al geraden hebt, is de Redis-client voor Node.js. U kunt het installeren via npm met de volgende opdracht.

npm install redis

Nadat u de module node_redis hebt geïnstalleerd, bent u klaar om te gaan. Laten we een eenvoudig bestand maken, app.js, en kijken hoe u verbinding kunt maken met Redis vanuit Node.js.

app.js

var redis = require('redis');
client = redis.createClient(); //creates a new client

Redis.createClient () gebruikt standaard 127.0.0.1 en 6379 als respectievelijk de hostnaam en de poort. Als u een andere host / poort hebt, kunt u deze als volgt leveren:

var client = redis.createClient(port, host);

Nu kunt u een actie uitvoeren zodra een verbinding tot stand is gebracht. Kortom, u hoeft alleen maar te luisteren naar Connect-evenementen zoals hieronder wordt weergegeven.

client.on('connect', function() {
    console.log('connected');
});

Dus het volgende fragment gaat naar app.js:

var redis = require('redis');
var client = redis.createClient();

client.on('connect', function() {
    console.log('connected');
});

Typ nu de knooppunt-app in de terminal om de app uit te voeren. Zorg ervoor dat uw Redis-server actief is voordat u dit fragment uitvoert.

Sleutel / waarde-paren opslaan

Nu u weet hoe u vanuit Node.js verbinding kunt maken met Redis, gaan we kijken hoe u sleutel / waarde-paren kunt opslaan in Redis-opslag.

Strings opslaan

Alle Redis-opdrachten worden weergegeven als verschillende functies op het clientobject. Gebruik de volgende syntaxis om een eenvoudige string op te slaan:

client.set('framework', 'AngularJS');

Of

client.set(['framework', 'AngularJS']);

De bovenstaande fragmenten slaan een eenvoudige string AngularJS op tegen het belangrijkste raamwerk. Merk op dat beide fragmenten hetzelfde doen. Het enige verschil is dat de eerste een variabel aantal argumenten doorgeeft en de laatste een args-array client.set() functie client.set() . U kunt ook een optionele terugbelopdracht doorgeven om een melding te ontvangen wanneer de bewerking is voltooid:

client.set('framework', 'AngularJS', function(err, reply) {
  console.log(reply);
});

Als de bewerking om een of andere reden is mislukt, geeft het err voor de callback de fout weer. Ga als volgt te werk om de waarde van de sleutel op te halen:

client.get('framework', function(err, reply) {
    console.log(reply);
});

client.get() laat je een sleutel ophalen die is opgeslagen in Redis. De waarde van de sleutel is toegankelijk via het antwoord van het callback-argument. Als de sleutel niet bestaat, is de waarde van antwoord leeg.

Hash opslaan

Vaak zal het opslaan van eenvoudige waarden uw probleem niet oplossen. U moet hashes (objecten) opslaan in Redis. Daarvoor kunt u de functie hmset() als volgt gebruiken:

client.hmset('frameworks', 'javascript', 'AngularJS', 'css', 'Bootstrap', 'node', 'Express');

client.hgetall('frameworks', function(err, object) {
    console.log(object);
});

Het bovenstaande fragment slaat een hash op in Redis die elke technologie aan zijn framework koppelt. Het eerste argument voor hmset() is de naam van de sleutel. Daaropvolgende argumenten vertegenwoordigen sleutel / waarde-paren. Op dezelfde manier wordt hgetall() gebruikt om de waarde van de sleutel op te halen. Als de sleutel wordt gevonden, bevat het tweede argument voor de callback de waarde die een object is.

Merk op dat Redis geen geneste objecten ondersteunt. Alle eigenschapswaarden in het object worden omgezet in tekenreeksen voordat ze worden opgeslagen. U kunt ook de volgende syntaxis gebruiken om objecten in Redis op te slaan:

client.hmset('frameworks', {
    'javascript': 'AngularJS',
    'css': 'Bootstrap',
    'node': 'Express'
});

Een optionele callback kan ook worden doorgegeven om te weten wanneer de bewerking is voltooid.

Alle functies (commando's) kunnen worden opgeroepen met hoofdletters / kleine letters. client.hmset() en client.HMSET() zijn bijvoorbeeld hetzelfde. Lijsten opslaan

Als u een lijst met items wilt opslaan, kunt u Redis-lijsten gebruiken. Gebruik de volgende syntaxis om een lijst op te slaan:

client.rpush(['frameworks', 'angularjs', 'backbone'], function(err, reply) {
    console.log(reply); //prints 2
});

Het bovenstaande fragment maakt een lijst genaamd frameworks en duwt er twee elementen naar toe. Dus de lengte van de lijst is nu twee. Zoals je kunt zien, heb ik een args array gepasseerd om te rpush . Het eerste item van de array vertegenwoordigt de naam van de sleutel, terwijl de rest de elementen van de lijst vertegenwoordigt. Je kunt ook lpush() plaats van rpush() om de elementen naar links te duwen.

Om de elementen van de lijst op te halen, kunt u de functie lrange() als volgt gebruiken:

client.lrange('frameworks', 0, -1, function(err, reply) {
    console.log(reply); // ['angularjs', 'backbone']
});

Houd er rekening mee dat u alle elementen van de lijst krijgt door -1 door te geven als het derde argument voor lrange() . Als u een subset van de lijst wilt, moet u hier de eindindex doorgeven.

Sets opslaan

Sets lijken op lijsten, maar het verschil is dat duplicaten niet zijn toegestaan. Als u dus geen dubbele elementen in uw lijst wilt, kunt u een set gebruiken. Hier is hoe we ons vorige fragment kunnen aanpassen om een set in plaats van een lijst te gebruiken.

client.sadd(['tags', 'angularjs', 'backbonejs', 'emberjs'], function(err, reply) {
    console.log(reply); // 3
});

Zoals u kunt zien, maakt de functie sadd() een nieuwe set met de opgegeven elementen. Hier is de lengte van de set drie. Om de leden van de set op te halen, gebruikt u de functie smembers() als volgt:

client.smembers('tags', function(err, reply) {
    console.log(reply);
});

Met dit fragment worden alle leden van de set opgehaald. Houd er rekening mee dat de volgorde niet behouden blijft tijdens het ophalen van de leden.

Dit was een lijst met de belangrijkste gegevensstructuren die in elke door Redis aangedreven app worden gevonden. Behalve tekenreeksen, lijsten, sets en hashes, kunt u gesorteerde sets, hyperLogLogs en meer opslaan in Redis. Als u een volledige lijst met opdrachten en gegevensstructuren wilt, gaat u naar de officiële Redis-documentatie. Onthoud dat bijna elke Redis-opdracht wordt weergegeven op het clientobject dat wordt aangeboden door de module node_redis.

Nog enkele belangrijke bewerkingen ondersteund door node_redis.

Controle van het bestaan van sleutels

Soms moet u controleren of er al een sleutel bestaat en dienovereenkomstig doorgaan. Om dit te doen, kunt u de exists() -functie gebruiken zoals hieronder getoond:

client.exists('key', function(err, reply) {
    if (reply === 1) {
        console.log('exists');
    } else {
        console.log('doesn\'t exist');
    }
});

Sleutels verwijderen en verlopen

Soms moet u enkele toetsen wissen en opnieuw initialiseren. Om de toetsen te wissen, kunt u del command gebruiken zoals hieronder getoond:

client.del('frameworks', function(err, reply) {
    console.log(reply);
});

U kunt ook een vervaltijd opgeven voor een bestaande sleutel als volgt:

client.set('key1', 'val1');
client.expire('key1', 30);

Bovenstaand fragment kent een vervaltijd van 30 seconden toe aan de sleuteltoets1.

Toenemend en afnemend

Redis ondersteunt ook oplopende en aflopende toetsen. Gebruik de functie incr() om een toets te verhogen zoals hieronder wordt getoond:

client.set('key1', 10, function() {
    client.incr('key1', function(err, reply) {
        console.log(reply); // 11
    });
});

De incr() functie in stappen van een sleutel de waarde met 1. Als u increment door een ander bedrag, kunt u gebruik maken incrby() functie. Om een toets te verlagen, kunt u op dezelfde manier de functies gebruiken zoals decr() en decrby() .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow