Една от най-популярните библиотеки за работа със сървър Redis от приложение Node.js е node-redis , достъпен на https://github.com/NodeRedis/node-redis.
Инсталирайте библиотеката във вашия проект:
npm install redis Съвет:не забравяйте първо да стартирате
npm init -yако проектът е чисто нов и няматеpackage.jsonфайл вече.
Свържете се с екземпляра на Redis
След като библиотеката е инсталирана, изисквайте я във вашия проект с помощта на
const redis = require('redis') или
import redis from 'redis'
След като имате redis обект, създайте нов клиент с помощта на
const client = redis.createClient({
url: 'redis://YOUR REDIS INSTANCE URL'
}) и се свържете с помощта на (вътре в асинхронна функция):
await client.connect() След като имате клиента, ние можем да изпълняваме всички неща, които знаем, че Redis може да направи.
За да затворите връзката, обадете се на:
client.quit() Съхраняване и извличане на ключови стойности
Съхранявайте двойка ключови стойности в redis, като използвате set() :
client.set("<key>", "<value>") Пример:
client.set("name", "Flavio")
client.set("age", 37)
Ако стартирате KEYS * в redis-cli на чист Redis сървър, ще видите да се показват двата ключа:

Можете да получите стойността, съхранена в ключ, като използвате get() :
const value = await client.get("name") Изтрийте низ ключ/стойност с помощта на
client.del("names") Работа със списъци
В Redis можем да работим със списъци с помощта на
LPUSHRPUSHLTRIMLRANGE
команди, които въведохме в модула Redis. Те картографират директно като client обективни методи.
Създайте списък с помощта на
client.lPush('names', 'Flavio') Натиснете нов елемент в края на списъка:
client.rPush('names', 'Roger') Или в горната част на списъка:
client.lPush('names', 'Syd') Избройте всички елементи в списък, като използвате:
const result = await client.lRange('names', 0, -1)
//result is [ 'Roger', 'Flavio', 'Syd' ]
Пуснете елементи от списък с помощта на
client.rPop('names') Изтрийте списък с
client.del('names') Работа с набори
В Redis работим с набори с помощта на
SADDSPOPSMEMBERS.
и други команди на Redis, които картографират директно като client обективни методи.
Създайте набор с
client.sAdd('names', 'Flavio') Добавете още елементи към комплекта:
client.sAdd('names', 'Roger') Можете да добавите няколко наведнъж:
client.sAdd('names', 'Roger', 'Syd') също чрез предаване на масив:
const names = ['Flavio', 'Roger', 'Syd']
client.sAdd('names', names) Избройте всички елементи в комплект, като използвате:
const names = await client.sMembers('names') Пуснете произволен елемент от набор, като използвате:
client.sPop('names') Добавете втори параметър, за да премахнете няколко произволни елемента:
client.sPop('names', 3) Изтрийте набор с
client.del('names') Работа с хешове
В Redis работим с хешове, използвайки набор от команди, които включват
HMSETHGETALLHSETHINCRBY.
и други команди, които въведохме в модула Redis, които картографират директно като client обективни методи.
Създайте хеш с помощта на
client.hSet('person:1', 'name', 'Flavio', 'age', 37) За да получите всички свойства на потребител, използвайте HGETALL:
const items = client.hGetAll('person:1') Можете да актуализирате хеш свойство с помощта на HSET:
client.hSet('person:1', 'age', 38) Можете да увеличите стойност, съхранена в хеш, като използвате HINCRBY:
client.hIncrBy('person:1', 'age', 1) Изтрийте хеш с помощта на
client.del('person:1') Абонаменти
Абонаментите са невероятна функция на Redis, която ни дава възможност да правим наистина фантастични неща в Node.js.
Издател изпраща съобщение в канал. Получават го множество абонати.
Абонирайте се за канал с помощта на
await subscriber.subscribe('dogs', (message) => {
console.log(message);
})
Публикувайте в канал с помощта на client.publish('<channel>', '<message>')
client.publish('dogs', 'Roger')
Имайте предвид, че не можете да публикувате и да се абонирате от един и същ client пример.
За да направите това в същото приложение, създайте 2 клиента:
const subscriber = redis.createClient({ ... })
const publisher = redis.createClient({ ... })
await subscriber.subscribe('dogs', (message) => {
console.log(channel, message);
})
publisher.publish('dogs', 'Roger')