Jednou z nejoblíbenějších knihoven pro práci se serverem Redis z aplikace Node.js je node-redis
, k dispozici na https://github.com/NodeRedis/node-redis.
Nainstalujte knihovnu do svého projektu:
npm install redis
Tip:nezapomeňte nejprve spustit
npm init -y
pokud je projekt zcela nový a nemátepackage.json
soubor již.
Připojit k instanci Redis
Jakmile je knihovna nainstalována, vyžádejte ji ve svém projektu pomocí
const redis = require('redis')
nebo
import redis from 'redis'
Jakmile budete mít redis
objekt, vytvořte nového klienta pomocí
const client = redis.createClient({
url: 'redis://YOUR REDIS INSTANCE URL'
})
a připojte se pomocí (uvnitř asynchronní funkce):
await client.connect()
Jakmile budete mít klienta, můžeme provádět všechny věci, o kterých víme, že Redis umí.
Chcete-li spojení ukončit, zavolejte na číslo:
client.quit()
Ukládání a načítání hodnot klíčů
Uložte pár klíč-hodnota do redis pomocí set()
:
client.set("<key>", "<value>")
Příklad:
client.set("name", "Flavio")
client.set("age", 37)
Pokud spustíte KEYS *
v redis-cli
na čistém serveru Redis uvidíte tyto dva klíče:
Hodnotu uloženou v klíči můžete získat pomocí get()
:
const value = await client.get("name")
Odstraňte řetězec klíč/hodnota pomocí
client.del("names")
Práce se seznamy
V Redis můžeme pracovat se seznamy pomocí
LPUSH
RPUSH
LTRIM
LRANGE
příkazy, které jsme zavedli v modulu Redis. Mapují přímo jako client
objektové metody.
Vytvořte seznam pomocí
client.lPush('names', 'Flavio')
Přesuňte novou položku na konec seznamu:
client.rPush('names', 'Roger')
Nebo v horní části seznamu:
client.lPush('names', 'Syd')
Vypište všechny položky v seznamu pomocí:
const result = await client.lRange('names', 0, -1)
//result is [ 'Roger', 'Flavio', 'Syd' ]
Odstraňte položky ze seznamu pomocí
client.rPop('names')
Smažte seznam pomocí
client.del('names')
Práce se sadami
V Redis pracujeme se sadami pomocí
SADD
SPOP
SMEMBERS
.
a další příkazy Redis, které mapují přímo jako client
objektové metody.
Vytvořte sadu pomocí
client.sAdd('names', 'Flavio')
Přidejte do sady další položky:
client.sAdd('names', 'Roger')
Můžete jich přidat více najednou:
client.sAdd('names', 'Roger', 'Syd')
také předáním pole:
const names = ['Flavio', 'Roger', 'Syd']
client.sAdd('names', names)
Vypište všechny položky v sadě pomocí:
const names = await client.sMembers('names')
Vyhoďte náhodnou položku ze sady pomocí:
client.sPop('names')
Chcete-li vypustit více náhodných položek, přidejte druhý parametr:
client.sPop('names', 3)
Vymažte sadu pomocí
client.del('names')
Práce s hodnotami hash
V Redis pracujeme s hashe pomocí sady příkazů, které zahrnují
HMSET
HGETALL
HSET
HINCRBY
.
a další příkazy, které jsme zavedli v modulu Redis, které mapují přímo jako client
objektové metody.
Vytvořte hash pomocí
client.hSet('person:1', 'name', 'Flavio', 'age', 37)
Chcete-li získat všechny vlastnosti uživatele, použijte HGETALL:
const items = client.hGetAll('person:1')
Vlastnost hash můžete aktualizovat pomocí HSET:
client.hSet('person:1', 'age', 38)
Hodnotu uloženou v hash můžete zvýšit pomocí HINCRBY:
client.hIncrBy('person:1', 'age', 1)
Odstraňte hash pomocí
client.del('person:1')
Předplatné
Předplatná jsou úžasnou funkcí Redis, která nám umožňuje dělat opravdu skvělé věci v Node.js.
Vydavatel odešle zprávu na kanál. Obdrží jej více odběratelů.
Přihlaste se k odběru kanálu pomocí
await subscriber.subscribe('dogs', (message) => {
console.log(message);
})
Publikovat do kanálu pomocí client.publish('<channel>', '<message>')
client.publish('dogs', 'Roger')
Uvědomte si, že nemůžete publikovat a odebírat ze stejného client
instance.
Chcete-li tak učinit ve stejné aplikaci, vytvořte 2 klienty:
const subscriber = redis.createClient({ ... })
const publisher = redis.createClient({ ... })
await subscriber.subscribe('dogs', (message) => {
console.log(channel, message);
})
publisher.publish('dogs', 'Roger')