One place for hosting & domains

      Listas

      Como Gerenciar Listas no Redis


      Introdução

      O Redis é um datastore ou armazenamento de dados open-source de chave-valor na memória. No Redis, uma lista é uma coleção de strings classificadas por ordem de inserção, semelhante a listas encadeadas. Este tutorial aborda como criar e trabalhar com elementos nas listas do Redis.

      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 Listas

      Uma chave pode conter apenas uma lista, embora qualquer lista possa conter mais de quatro bilhões de elementos. O Redis lê listas da esquerda para a direita e você pode adicionar novos elementos ao cabeçalho de uma lista (a extremidade “esquerda”) com o comando lpush ou a cauda (a extremidade” direita “) com rpush. Você também pode usar lpush ou rpush para criar uma nova lista:

      Ambos os comandos produzirão um número inteiro mostrando quantos elementos estão na lista. Para ilustrar, execute os seguintes comandos para criar uma lista contendo o ditado “I think therefore I am”:

      • lpush key_philosophy1 "therefore"
      • lpush key_philosophy1 "think"
      • rpush key_philosophy1 "I"
      • lpush key_philosophy1 "I"
      • rpush key_philosophy1 "am"

      A saída do último comando mostrará:

      Output

      (integer) 5

      Observe que você pode adicionar vários elementos na lista com uma única instrução lpush ou rpush:

      • rpush key_philosophy1 "-" "Rene" "Decartes"

      Os comandos lpushx e rpushx também são usados para adicionar elementos às listas, mas só funcionarão se a lista fornecida já existir. Se um dos comandos falhar, retornará (integer) 0:

      • rpushx key_philosophy2 "Happiness" "is" "the" "highest" "good" "–" "Aristotle"

      Output

      (integer) 0

      Para alterar um elemento existente em uma lista, execute o comando lset seguido pelo nome da chave, o índice do elemento que você deseja alterar e o novo valor:

      • lset key_philosophy1 5 "sayeth"

      Se você tentar adicionar um elemento de lista a uma chave existente que não contém uma lista, isso causará um choque nos tipos de dados e retornará um erro. Por exemplo, o seguinte comando set cria uma chave que contém uma string, portanto a tentativa a seguir de adicionar um elemento de lista a ela com lpush falhará:

      • set key_philosophy3 "What is love?"
      • lpush key_philosophy3 "Baby don't hurt me"

      Output

      (error) WRONGTYPE Operation against a key holding the wrong kind of value

      Não é possível converter chaves Redis de um tipo de dados para outro, portanto, para transformar key_philosophy3 em uma lista, você precisará excluir a chave e começar de novo com um comando lpush ou rpush.

      Recuperando Elementos de uma Lista

      Para recuperar um intervalo de itens em uma lista, use o comando lrange seguido de um offset para começar e um offset para parar. Cada offset é um índice baseado em zero, o que significa que 0 representa o primeiro elemento da lista, 1 representa o próximo e assim por diante.

      O comando a seguir retornará todos os elementos da lista de exemplo criada na seção anterior:

      • lrange key_philosophy1 0 7

      Output

      1) "I" 2) "think" 3) "therefore" 4) "I" 5) "am" 6) "sayeth" 7) "Rene" 8) "Decartes"

      os offsets passados para o lrange também podem ser números negativos. Quando usado neste caso, -1 representa o elemento final na lista, -2 representa o penúltimo elemento na lista e assim por diante. O exemplo a seguir retorna os três últimos elementos da lista mantida em key_philosophy1:

      • lrange key_philosophy1 -3 -1

      Output

      1) "I" 2) "am" 3) "sayeth"

      Para recuperar um único elemento de uma lista, você pode usar o comando lindex. No entanto, este comando requer que você forneça o índice do elemento como argumento. Assim como o lrange, o índice é baseado em zero, o que significa que o primeiro elemento está no índice 0, o segundo está no índice 1, e assim por diante:

      Output

      "am"

      Para descobrir quantos elementos estão em uma determinada lista, use o comando llen, que é a abreviação de “list length”:

      Output

      (integer) 8

      Se o valor armazenado na chave fornecida não existir, o llen retornará um erro.

      Removendo Elementos de uma Lista

      O comando lrem remove a primeira de um número definido de ocorrências que correspondem a um determinado valor. Para experimentar isso, crie a seguinte lista:

      • rpush key_Bond "Never" "Say" "Never" "Again" "You" "Only" "Live" "Twice" "Live" "and" "Let" "Die" "Tomorrow" "Never" "Dies"

      O exemplo de lrem a seguir removerá a primeira ocorrência do valor "Live":

      Este comando produzirá o número de elementos removidos da lista:

      Output

      (integer) 1

      O número passado para um comando lrem também pode ser negativo. O exemplo a seguir removerá as duas últimas ocorrências do valor "Never":

      Output

      (integer) 2

      O comando lpop remove e retorna o primeiro elemento, ou “o mais à esquerda” de uma lista:

      Output

      "Never"

      Da mesma forma, para remover e retornar o último elemento “mais à direita” de uma lista, use rpop:

      Output

      "Dies"

      O Redis também inclui o comando rpoplpush, que remove o último elemento de uma lista e o envia ao início de outra lista:

      • rpoplpush key_Bond key_AfterToday

      Output

      "Tomorrow"

      Se as chaves de origem e destino passadas para o comando rpoplpush forem as mesmas, elas essencialmente rotacionarão os elementos da lista.

      Conclusão

      Este guia detalha vários comandos que você pode usar para criar e gerenciar listas 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.



      Source link