Uma das bibliotecas mais populares para trabalhar com um servidor Redis de um aplicativo Node.js é a
node-redis , disponível em https://github.com/NodeRedis/node-redis. Instale a biblioteca em seu projeto:
npm install redis
Dica:não se esqueça de executar primeironpm init -yse o projeto for novo e você não tiver umpackage.jsonarquivo já.
Conectar-se à instância do Redis
Depois que a biblioteca estiver instalada, exija-a em seu projeto usando
const redis = require('redis') ou
import redis from 'redis' Depois de ter o
redis objeto, crie um novo cliente usando const client = redis.createClient({
url: 'redis://YOUR REDIS INSTANCE URL'
}) e conecte usando (dentro de uma função assíncrona):
await client.connect() Depois de ter o cliente, podemos realizar todas as coisas que sabemos que o Redis pode fazer.
Para encerrar a conexão, ligue:
client.quit() Armazenar e recuperar valores-chave
Armazene um par de valores-chave no redis usando
set() :client.set("<key>", "<value>") Exemplo:
client.set("name", "Flavio")
client.set("age", 37) Se você executar
KEYS * em redis-cli em um servidor Redis limpo, você verá as duas chaves aparecendo:
Você pode obter o valor armazenado em uma chave usando
get() :const value = await client.get("name") Excluir uma string de chave/valor usando
client.del("names") Trabalhando com listas
No Redis podemos trabalhar com listas usando o
LPUSHRPUSHLTRIMLRANGE
comandos que introduzimos no módulo Redis. Eles mapeiam diretamente como
client métodos de objetos. Crie uma lista usando
client.lPush('names', 'Flavio') Empurre um novo item para o final da lista:
client.rPush('names', 'Roger') Ou no topo da lista:
client.lPush('names', 'Syd') Liste todos os itens em uma lista usando:
const result = await client.lRange('names', 0, -1)
//result is [ 'Roger', 'Flavio', 'Syd' ]
Solte itens de uma lista usando
client.rPop('names') Excluir uma lista usando
client.del('names') Trabalhando com conjuntos
No Redis trabalhamos com conjuntos usando
SADDSPOPSMEMBERS.
e outros comandos Redis, que mapeiam diretamente como
client métodos de objetos. Crie um conjunto usando
client.sAdd('names', 'Flavio') Adicione mais itens ao conjunto:
client.sAdd('names', 'Roger') Você pode adicionar vários de uma só vez:
client.sAdd('names', 'Roger', 'Syd') também passando um array:
const names = ['Flavio', 'Roger', 'Syd']
client.sAdd('names', names) Liste todos os itens em um conjunto usando:
const names = await client.sMembers('names') Solte um item aleatório de um conjunto usando:
client.sPop('names') Adicione um segundo parâmetro para descartar vários itens aleatórios:
client.sPop('names', 3) Excluir um conjunto usando
client.del('names') Trabalhando com hashes
No Redis trabalhamos com hashes usando um conjunto de comandos que incluem
HMSETHGETALLHSETHINCRBY.
e outros comandos que introduzimos no módulo Redis, que mapeiam diretamente como
client métodos de objetos. Crie um hash usando
client.hSet('person:1', 'name', 'Flavio', 'age', 37) Para obter todas as propriedades de um usuário, use HGETALL:
const items = client.hGetAll('person:1') Você pode atualizar uma propriedade de hash usando HSET:
client.hSet('person:1', 'age', 38) Você pode incrementar um valor armazenado em um hash usando HINCRBY:
client.hIncrBy('person:1', 'age', 1) Excluir um hash usando
client.del('person:1') Assinaturas
As assinaturas são um recurso incrível do Redis, nos capacitando a fazer coisas realmente sofisticadas no Node.js.
Um editor envia uma mensagem em um canal. Vários assinantes o recebem.
Inscreva-se em um canal usando
await subscriber.subscribe('dogs', (message) => {
console.log(message);
}) Publique em um canal usando
client.publish('<channel>', '<message>') client.publish('dogs', 'Roger') Esteja ciente de que você não pode publicar e assinar do mesmo
client instância. Para fazer isso no mesmo aplicativo, crie 2 clientes:
const subscriber = redis.createClient({ ... })
const publisher = redis.createClient({ ... })
await subscriber.subscribe('dogs', (message) => {
console.log(channel, message);
})
publisher.publish('dogs', 'Roger')