Sök…


Anmärkningar

Vi har täckt de grundläggande och mest använda operationerna i node_redis. Du kan använda den här modulen för att utnyttja Redis full kraft och skapa riktigt sofistikerade Node.js-appar. Du kan bygga många intressanta saker med detta bibliotek, till exempel ett starkt cachelager, ett kraftfullt meddelandesystem för pub / sub och mer. För att veta mer om biblioteket, kolla in deras dokumentation .

Komma igång

node_redis är, som du har gissat, Redis-klienten för Node.js. Du kan installera det via npm med följande kommando.

npm install redis

När du har installerat node_redis-modulen är du bra att gå. Låt oss skapa en enkel fil, app.js, och se hur du ansluter till Redis från Node.js.

app.js

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

Som standard kommer redis.createClient () att använda 127.0.0.1 och 6379 som värdnamn respektive port. Om du har en annan värd / port kan du leverera dem enligt följande:

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

Nu kan du utföra några åtgärder när en anslutning har upprättats. I grund och botten behöver du bara lyssna för anslutningsevenemang som visas nedan.

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

Följande utdrag går så till app.js:

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

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

Skriv nu nod-appen i terminalen för att köra appen. Se till att din Redis-server är igång innan du kör det här utdraget.

Förvaring av viktiga par

Nu när du vet hur du ansluter till Redis från Node.js, låt oss se hur du lagrar nyckelvärdespar i Redis-lagring.

Förvara strängar

Alla Redis-kommandon exponeras som olika funktioner på klientobjektet. För att lagra en enkel sträng använder du följande syntax:

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

Eller

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

Ovanstående utdrag lagrar en enkel sträng AngularJS mot nyckelramverket. Du bör notera att båda utdragen gör samma sak. Den enda skillnaden är att den första passerar ett variabelt antal argument medan det senare skickar en args-array till client.set() -funktionen. Du kan också skicka ett valfritt återuppringning för att få ett meddelande när operationen är klar:

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

Om åtgärden misslyckades av någon anledning representerar err argument till återuppringningen felet. För att hämta värdet på nyckeln gör du följande:

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

client.get() låter dig hämta en nyckel som är lagrad i Redis. Knappens värde kan nås via svarets återuppringningsargument. Om nyckeln inte finns kommer svarets värde att vara tomt.

Lagra Hash

Att lagra enkla värden många gånger löser inte ditt problem. Du måste lagra hashes (objekt) i Redis. För det kan du använda hmset() -funktionen enligt följande:

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

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

Ovanstående kod innehåller en hash i Redis som kartlägger varje teknik till dess ramverk. Det första argumentet till hmset() är namnet på nyckeln. Efterföljande argument representerar nyckelvärdespar. På liknande sätt används hgetall() för att hämta värdet på nyckeln. Om nyckeln hittas kommer det andra argumentet till återuppringning att innehålla värdet som är ett objekt.

Observera att Redis inte stöder kapslade objekt. Alla fastighetsvärden i objektet kommer att tvingas till strängar innan de lagras. Du kan också använda följande syntax för att lagra objekt i Redis:

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

En valfri återuppringning kan också skickas för att veta när operationen är klar.

Alla funktioner (kommandon) kan anropas med stora och små bokstäver. Till exempel är client.hmset() och client.HMSET() samma. Lagring av listor

Om du vill lagra en lista med objekt kan du använda Redis-listor. För att lagra en lista använder du följande syntax:

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

Ovanstående kod skapar en lista som kallas ramverk och skjuter två element till den. Så listans längd är nu två. Som ni ser har jag passerat en args grupp för att rpush . Det första objektet i matrisen representerar namnet på nyckeln medan resten representerar elementen i listan. Du kan också använda lpush() istället för rpush() att trycka elementen till vänster.

För att hämta elementen i listan kan du använda lrange() enligt följande:

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

Observera att du får alla element i listan genom att lämna -1 som det tredje argumentet för att lrange() . Om du vill ha en delmängd i listan bör du klara slutindexet här.

Lagra uppsättningar

Uppsättningar liknar listor, men skillnaden är att de inte tillåter dubbletter. Så om du inte vill ha några duplicerade element i listan kan du använda en uppsättning. Så här kan vi ändra vårt tidigare utdrag för att använda en uppsättning istället för listan.

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

Som du ser sadd() -funktionen en ny uppsättning med de angivna elementen. Här är setens längd tre. För att hämta medlemmarna i uppsättningen använder smembers() funktionen smembers() enligt följande:

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

Detta utdrag hämtar alla medlemmar i uppsättningen. Observera bara att beställningen inte bevaras när medlemmarna hämtas.

Detta var en lista över de viktigaste datastrukturerna som finns i alla Redis-drevna appar. Förutom strängar, listor, uppsättningar och hashes kan du lagra sorterade uppsättningar, hyperLogLogs och mer i Redis. Om du vill ha en komplett lista med kommandon och datastrukturer, besök den officiella Redis-dokumentationen. Kom ihåg att nästan varje Redis-kommando exponeras på klientobjektet som erbjuds av modulen node_redis.

Några viktigare åtgärder som stöds av node_redis.

Kontrollera förekomsten av nycklar

Ibland kan du behöva kontrollera om en nyckel redan finns och fortsätta därefter. För att göra det kan du använda exists() -funktionen som visas nedan:

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

Radera och löpa ut nycklar

Ibland måste du rensa några nycklar och initialisera dem igen. För att rensa tangenterna kan du använda del-kommandot som visas nedan:

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

Du kan också ge en befintlig nyckel till en befintlig nyckel enligt följande:

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

Ovanstående kod tilldelar en giltighetstid på 30 sekunder till tangenten 1.

Inkrementering och minskning

Redis stöder också inkrementering och dekrementering av nycklar. För att öka en nyckel använder du incr() -funktionen som visas nedan:

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

Funktionen incr() ökar ett nyckelvärde med 1. Om du behöver öka med ett annat belopp kan du använda incrby() -funktionen. På samma sätt kan du använda funktionerna som decr() och decrby() att minska en tangent.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow