Cheatsheet

Como Gerenciar Hashes no Redis

Published on April 2, 2020
Português
Como Gerenciar Hashes no Redis

Introdução

O Redis é um datastore ou armazenamento de dados open-source de chave-valor na memória. Um hash do Redis é um tipo de dado que representa um mapeamento entre um campo de string e um valor de string. Os hashes podem conter muitos pares de campo-valor e são projetados para não ocupar muito espaço, tornando-os ideais para representar objetos de dados. Por exemplo, um hash pode representar um cliente e incluir campos como nome, endereço, e-mail ou cliente_id.

Este tutorial abordará como gerenciar hashes no Redis, desde a criação deles até a recuperação e exclusão dos dados mantidos em um hash.

Como Utilizar Este Guia

Este guia está no formato de referência rápida com trechos de linha de comando independentes. Recomendamos que você pule para qualquer seção que seja relevante para a tarefa que você está tentando concluir.

Os comandos mostrados neste guia foram testados em um servidor Ubuntu 18.04 executando a versão 4.0.9 do Redis. Para configurar um ambiente semelhante, você pode seguir o Passo 1 do nosso guia Como Instalar e Proteger o Redis no Ubuntu 18.04. Vamos demonstrar como esses comandos se comportam executando-os com redis-cli, a interface de linha de comando do Redis. Observe que se você estiver usando uma interface Redis diferente — Redli, por exemplo — a saída exata de certos comandos pode ser diferente.

Como alternativa, você pode provisionar uma instância de banco de dados Redis gerenciada para testar esses comandos, mas observe que, dependendo do nível de controle permitido pelo seu provedor de banco de dados, alguns comandos neste guia podem não funcionar como descrito. Para provisionar um banco de dados gerenciado na DigitalOcean, siga nossa documentação de produto para Managed Databases. Então, você deve instalar ou o Redli ou configurar um túnel TLS para conectar-se ao banco de dados gerenciado por TLS.

Criando Hashes

Para criar um hash, execute o comando hset. Este comando aceita o nome da chave do hash, o campo de string e o valor correspondente da string como argumentos:

  1. hset poet:Verlaine nationality French

Nota: Neste exemplo e nos seguintes, poet:Verlaine é a chave do hash. Pontos, traços e dois-pontos são comumente usados para tornar as chaves e campos com várias palavras mais legíveis. É útil garantir que suas chaves sigam um formato consistente e de fácil leitura.

O hset retorna (integer) 1 se o campo especificado for um novo campo e o valor tiver sido corretamente definido:

Output
(integer) 1

Se, no entanto, você não incluir um valor, campo ou nome para a chave do hash, o hset retornará um erro.

Além disso, observe que o hset substituirá o conteúdo do hash se ele já existir:

  1. hset poet:Verlaine nationality Francais

Se o campo já existe e seu valor foi atualizado com sucesso, o hset retornará (integer) 0:

Output
(integer) 0

Você também pode usar o hsetnx para adicionar campos aos hashes, mas ele só funcionará se o campo ainda não existir. Se o campo especificado já existir, o hsetnx não terá nenhum efeito e retornará (integer) 0:

  1. hsetnx poet:Verlaine nationality French
Output
(integer) 0

Para definir vários pares de campo/valor para um determinado conjunto, use o comando hmset seguido pelas strings de campo/valor correspondentes:

  1. hmset poet:Verlaine born 1844 died 1896 genre Decadent

O hmset retornará apenas OK se tiver sido executado com sucesso.

Recuperando Informações dos Hashes

Você pode determinar se existe um campo para um determinado hash com o comando hexists:

  1. hexists poet:Verlaine nationality

O hexists retornará (integer) 1 se o campo existir, e (integer) 0 se não existir.

Para retornar o valor de um campo, execute o comando hget seguido da chave do hash e do campo cujo valor você deseja recuperar:

  1. hget poet:Verlaine nationality
Output
"Francais"

O hmget usa a mesma sintaxe, mas pode retornar os valores de vários campos.

  1. hmget poet:Verlaine born died
Output
1) "1844" 2) "1896"

Se o hash que você passar para hget ou para o hmget não existir, os dois comandos retornarão (nil):

  1. hmget poet:Dickinson born died
Output
1) (nil) 2) (nil)

Para obter uma lista de todos os campos mantidos em um determinado hash, execute o comando hkeys:

  1. hkeys poet:Verlaine
Output
1) "nationality" 2) "born" 3) "died" 4) "genre"

Por outro lado, execute hvals para recuperar uma lista de valores mantidos dentro de um hash:

  1. hvals poet:Verlaine
Output
1) "French" 2) "1844" 3) "1896" 4) "Decadent"

Para retornar uma lista de todos os campos mantidos por um hash e seus valores associados, execute o hgetall:

  1. hgetall poet:Verlaine
Output
1) "nationality" 2) "French" 3) "born" 4) "1844" 5) "died" 6) "1896" 7) "genre" 8) "Decadent"

Você pode encontrar o número de campos em um hash executando o hlen, que significa “hash length” ou comprimento do hash:

  1. hlen poet:Verlaine
Output
(integer) 4

Você pode encontrar o comprimento da string de valor associada a um campo com o hstrlen, que significa “hash string length” ou comprimento da string do hash:

  1. hstrlen poet:Verlaine nationality
Output
(integer) 8

O hlen retornará (integer) 0 se o hash não existir.

Removendo Campos dos Hashes

Para excluir um campo de um hash, execute o comando hdel. O hdel pode aceitar vários campos como argumentos e retornará um número inteiro indicando quantos campos foram removidos do hash:

  1. hdel poet:Verlaine born died
Output
(integer) 2

Se você passar um campo que não existe para o hdel, ele irá ignorar esse campo, mas excluirá quaisquer outros campos existentes que você especificar.

Conclusão

Este guia detalha vários comandos usados para criar e gerenciar hashes no Redis. Se houver outros comandos, argumentos ou procedimentos relacionados que você gostaria de ver descritos neste guia, peça ou faça sugestões nos comentários abaixo.

Para obter mais informações sobre comandos Redis, consulte nossa série de tutoriais Como Gerenciar um Banco de Dados Redis.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean



Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.