[Redis] Instalação no Windows (versão verde) e primeiros passos

1. Conceito NOSQL

redis é um banco de dados não relacional da série NOSQL de alto desempenho

  • O que é NOSQL
    NoSQL (NoSQL = Not Only SQL), que significa “não apenas SQL”, é um novo conceito de banco de dados e geralmente se refere a bancos de dados não relacionais.
    A palavra NoSQL também tem uma explicação prática como "sem SQL". Por ser um banco de dados não relacional, ele não oferece suporte a padrões de consulta SQL unificados (linguagem de consulta estruturada) e não usa SQL para processamento de dados. mas tem sua própria API de processamento independente

  • O pano de fundo do desenvolvimento do NOSQL
    Com o aumento gradual dos sites web 2.0 da Internet, os bancos de dados relacionais tradicionais tornaram-se incapazes de lidar com os sites web 2.0, expondo muitos problemas. No entanto, os bancos de dados não relacionais são muito rápidos devido à sua própria velocidade. Os recursos floresceram.
    O surgimento dos bancos de dados NoSQL visa resolver os desafios trazidos pela coleta de dados em grande escala e vários tipos de dados, especialmente os problemas na direção da aplicação de big data.

  • Comparando bancos de dados NOSQL e relacionais

    • vantagem:

      • Custo: O banco de dados NoSQL é simples e fácil de implantar. É basicamente um software de código aberto. Não requer um grande custo para aquisição e uso como o Oracle. Em comparação, o banco de dados relacional é mais barato.
      • Velocidade de consulta: o banco de dados NoSQL armazena dados no cache, enquanto os bancos de dados relacionais armazenam dados no disco rígido. Naturalmente, a velocidade de consulta é muito mais lenta que a do banco de dados NoSQL.
      • Formato de dados de armazenamento: O formato de armazenamento do NoSQL é forma de chave e valor, forma de documento, forma de imagem, etc., para que possa armazenar tipos básicos, objetos ou coleções e outros formatos, enquanto o banco de dados suporta apenas tipos básicos.
      • Escalabilidade: Os bancos de dados relacionais têm limitações em mecanismos de consulta multitabelas, como join, o que dificulta a expansão.
    • deficiência:

      • As ferramentas e materiais para manutenção são limitados porque o NoSQL é uma tecnologia mais recente e não pode ser comparada com o banco de dados relacional, que é uma tecnologia que existe há mais de dez anos.
      • Ele não fornece suporte para sql. Se uma linguagem de estrutura de consulta como sql não for suportada, certos custos de aprendizado e uso serão incorridos.
      • Não fornece processamento de transações semelhante a um banco de dados relacional.

  • Vantagens de bancos de dados não relacionais:

    • Desempenho NOSQL é baseado em pares chave-valor, que podem ser imaginados como uma estrutura de mapa simples, e não precisa ser analisado pela linguagem SQL, portanto o desempenho é muito alto .
    • A escalabilidade também ocorre porque é baseada em pares de valores-chave e não há acoplamento entre os dados, por isso é fácil de expandir horizontalmente .

  • Vantagens do banco de dados relacional:

    • Consultas complexas podem usar instruções SQL para executar facilmente consultas de dados muito complexas entre uma tabela e várias tabelas.
    • O suporte a transações permite que os requisitos de acesso a dados com alto desempenho de segurança sejam atendidos.

  • Resumir

    • Os bancos de dados relacionais e os bancos de dados NoSQL não são antagônicos, mas complementares, ou seja, os bancos de dados relacionais são geralmente usados, e os bancos de dados NoSQL são usados ​​quando o NoSQL é adequado, para que os bancos de dados NoSQL possam compensar as deficiências dos bancos de dados relacionais.
    • Geralmente, armazenamos dados em um banco de dados relacional e fazemos backup e armazenamos parte dos dados no banco de dados relacional no banco de dados nosql.

  • Os principais produtos NOSQL são os seguintes:

    • Banco de dados de armazenamento de valor-chave
      Produtos relacionados: Tokyo Cabinet/Tyrant,Redis, Voldemort, Berkeley DB
      aplicações típicas: Cache de conteúdo, usado principalmente para lidar com altas cargas de acesso de grandes quantidades de dados.
      Modelo de dados: pares de valores-chave
      Vantagens: Consulta rápida
      Desvantagens: Os dados armazenados carecem de estrutura
    • Banco de dados de armazenamento de coluna
      Produtos relacionados: Cassandra, HBase, Riak
      Aplicação típica: sistema de arquivos distribuído
      Modelo de dados: Armazenamento em cluster de coluna, armazenando os mesmos dados de coluna juntos
      Vantagens: velocidade de pesquisa rápida, forte escalabilidade, mais fácil de distribuir
      Desvantagens da extensão: As funções são relativamente limitadas
    • Banco de dados de documentos
      Produtos relacionados: CouchDB, MongoDB
      Aplicativos típicos: aplicativos da Web (semelhantes ao valor-chave, o valor é estruturado)
      Modelo de dados: uma série de pares chave -valor
      Vantagens: Os requisitos da estrutura de dados não são estritos
      Desvantagens: O desempenho da consulta não é alto e Falta de sintaxe de consulta unificada
    • Banco de dados de gráficos
      Bancos de dados relacionados: Neo4J, InfoGrid, Infinite Graph
      Aplicações típicas: Redes sociais
      Modelo de dados: Estrutura de gráfico
      Vantagens: Utilizar algoritmos relacionados à estrutura de gráfico.
      Desvantagens: O gráfico inteiro precisa ser calculado para obter o resultado e não é fácil implementar uma solução de cluster distribuída.

2.O que é Redis

Redis é um banco de dados de valor-chave de código aberto e de alto desempenho desenvolvido em linguagem C. De acordo com dados de teste oficiais, 50 execuções simultâneas de 100.000 solicitações resultaram em uma velocidade de leitura de 110.000 vezes/s, enquanto a velocidade de gravação foi de 110.000 vezes/s A velocidade é de 81.000 vezes/s, e o Redis fornece uma variedade de tipos de dados de valor-chave para se adaptar às necessidades de armazenamento em diferentes cenários. Os tipos de dados de valor-chave suportados pelo Redis até agora são os seguintes :

  • String tipo string
  • Hash tipo hash
  • Lista de tipos de lista
  • Conjunto de tipo de coleção
  • Tipo de conjunto classificado sortedset

Cenários de aplicação de redis

  • Cache (consulta de dados, conexão curta, conteúdo de notícias, conteúdo de produtos, etc.)
  • Lista de amigos online da sala de chat
  • Fila de tarefas. (Venda relâmpago, venda urgente, 12306, etc.)
  • Classificações de aplicativos
  • Estatísticas de visitas ao site
  • Processamento de expiração de dados (com precisão de milissegundos)
  • Separação de sessões em arquitetura de cluster distribuída

Adicione dois links:
Site oficial do Redis
Site chinês do Redis

3. Baixe e instale o Redis no Windows

Em primeiro lugar, no tutorial de instalação do site chinês redis, são fornecidos três métodos de instalação, a saber

  1. Instalação no Windows
  2. Instalação no Linux
  3. Instalação no Ubuntu

No entanto, as versões aqui são relativamente baixas e não é recomendado baixá-las
Insira a descrição da imagem aqui
. A versão mais alta aqui é apenas 2,4x.
Insira a descrição da imagem aqui
Aqui está um endereço recomendado, a versão é relativamente nova:
https://github.com/microsoftarchive/redis /releases
A página é a seguinte:
Insira a descrição da imagem aqui
Encontre o que deseja Para a versão baixada, clique em para baixar diretamente. O arquivo é muito pequeno, pois estamos usando no Windows, então baixamos o zip diretamente. A versão verde pode ser diretamente descompactado e usado. Após a descompactação, o arquivo do diretório é o seguinte: Você pode excluir todas as
Insira a descrição da imagem aqui
coisas
Insira a descrição da imagem aqui
inúteis ., o diretório após a classificação é:
Insira a descrição da imagem aqui
Entre eles, usaremos principalmente os três arquivos a seguir:
redis.windows.conf: arquivo de configuração
redis- cli.exe: cliente redis
redis-server.exe: servidor redis


4.Tipos de dados Redis e operações simples

Clique duas vezes em redis-server.exe (servidor redis) e a seguinte interface aparecerá: O número da porta é 6379.
Insira a descrição da imagem aqui
Não feche esta interface. Fechar esta interface equivale a fechar o servidor redis.
Em seguida, clique duas vezes para abrir **redis-cli.exe (cliente)** e você pode começar a operar o redis no console do cliente.
Os cinco tipos de estrutura de dados do redis foram mencionados acima:

  • O Redis armazena dados em formatos de chave e valor, onde as chaves são todas strings e o valor possui 5 estruturas de dados diferentes.
    • estrutura de dados de valor:
      1. String tipo string
      2. Hash tipo hash: formato do mapa
      3. Lista de tipo de lista: formato de lista vinculada. Suporta elementos repetidos
      4. Conjunto de tipo de coleção: elementos duplicados não são permitidos
      5. Tipo de conjunto classificado sortedset: nenhum elemento duplicado é permitido e os elementos estão em ordem

Cada um deles tem comandos independentes correspondentes para operar. Existem tutoriais relacionados em nosso site redis chinês: Os
Insira a descrição da imagem aqui
exemplos são os seguintes:
Insira a descrição da imagem aqui
O site chinês terá um resumo de comando mais completo e comandos de exemplo de clique, porque o conteúdo do comando correspondente aqui é relativamente pequeno. Muitos, aqui daremos um exemplo de uso simples e um resumo de alguns conteúdos simples que devem ser dominados. Você pode aprender e dominar os outros comandos específicos quando tiver tempo:

  1. String tipo string
    ① Armazenamento: definir valor da chave
    ② Obter: obter chave
    ③ Excluir: chave del
    Quando você digita palavras-chave de comando redis como set, ele terá um prompt de acompanhamento.
    Insira a descrição da imagem aqui
    Operação simples:
    Insira a descrição da imagem aqui

  2. Tipo de hash hash: formato do mapa
    ① Armazenamento: valor do campo-chave hset
    ② Obter: campo-chave hget
    ③ Excluir: valor do campo-chave hset
    Aqui, a exclusão de todo o valor do hash requer o uso de um comando geral. Isso será dito no final .
    Operação simples:
    Insira a descrição da imagem aqui

  3. Lista de tipo de lista: formato de lista vinculada. Suporta elementos repetidos.
    Você pode adicionar um elemento ao início (esquerda) ou ao final (direita) da lista
    ① Adicionar:
    valor da chave lpush: adicionar o elemento à tabela esquerda da lista
    valor da chave rpush: adicionar o elemento à direita lado da lista
    ② Get: lrange key start end
    ③ Delete:
    lpop key: Exclui o elemento mais à esquerda da lista e retorna o elemento
    rpop key: Exclui o elemento mais à direita da lista e retorna o elemento

Operação simples:
Insira a descrição da imagem aqui


4. Tipo de conjunto conjunto: Elementos duplicados não são permitidos
① Adicionar: valor da chave sadd
② Obter: chave smembers Obter todos os elementos na coleção do conjunto
③ Excluir: valor da chave srem Excluir um elemento na coleção do conjunto

Uma operação simples:
Insira a descrição da imagem aqui


5. Conjunto classificado tipo sortedset: Elementos duplicados não são permitidos e os elementos estão em ordem.
Cada elemento está associado a uma pontuação de tipo duplo. O Redis usa pontuações para classificar os membros da coleção, do menor ao maior.
① Adicionar: valor de pontuação da chave zadd
② Obter: início da chave zrange fim Adicione o parâmetro [withscores] para imprimir as pontuações correspondentes juntas
③ Excluir: valor da chave zrem

Uma operação simples:
Insira a descrição da imagem aqui


comandos comuns:

  • chaves *: Consulta todas as chaves
  • type key: Obtenha o tipo de valor correspondente à chave
  • del key: exclui o valor da chave especificada

Basta fazer isso:
Insira a descrição da imagem aqui

5. Persistência Redis

Redis é um banco de dados na memória. Quando o servidor Redis é reiniciado ou o computador é reiniciado, os dados serão perdidos. Podemos persistir os dados na memória Redis em um arquivo no disco rígido.
O Redis nos forneceu dois mecanismos de persistência:

  • RDB: Modo padrão, nenhuma configuração é necessária. Este mecanismo é usado por padrão,
    também chamado de modo instantâneo. Ele será persistido após um determinado período de tempo. Esta condição de gatilho de persistência é definida por nós mesmos no arquivo de configuração. Uma vez que a granularidade de esse método de persistência pode ser relativamente grande e pode ocorrer perda de dados.

     * 在一定的间隔时间中,检测key的变化情况,然后持久化数据
     1. 编辑redis.windwos.conf文件
     	#   after 900 sec (15 min) if at least 1 key changed
     	save 900 1
     	#   after 300 sec (5 min) if at least 10 keys changed
     	save 300 10
     	#   after 60 sec if at least 10000 keys changed
     	save 60 10000
     	
     2. 重新启动redis服务器,并指定配置文件名称
     	D:\...\redis\windows-64\redis>redis-server.exe redis.windows.conf
    

Abrimos e editamos o arquivo de configuração:
encontre SNAPSHOTTING, que significa instantâneo.
Insira a descrição da imagem aqui
Adicionamos a frase save 10 1, que significa que
a persistência será acionada quando pelo menos um valor de chave for modificado em dez segundos. Observe que a consulta aqui não acionará a persistência .orientado, vamos iniciar o serviço. Entre
na pasta onde seu redis-server está localizado, shift + botão direito do mouse, clique para abrir a janela de comando aqui , usamos o método de inicialização com o arquivo de configuração: redis-server.exe redis. windows.conf
O autor relatou um erro ao iniciar aqui: Criando o soquete de escuta TCP do servidor 127.0.0.1:6379: bind: Nenhum erro
De acordo com a consulta, pode ser o motivo pelo qual o cliente não saiu com sucesso. A solução é a seguinte :
Resolvendo a criação do soquete de escuta TCP do servidor 127.0.0.1:6379: bind: Nenhum erro
iniciado posteriormente com êxito:

Insira a descrição da imagem aqui
Após uma onda de operações, um arquivo .rdb aparecerá.
Insira a descrição da imagem aqui
Depois de reiniciar o serviço, os valores-chave armazenados anteriormente sempre existirão nos dados da sua memória até que você os exclua. O que precisa ser observado aqui é a frequência dos instantâneos, essas são suas condições desencadeantes.


O segundo método de persistência:

  • AOF: Método de registro, que pode registrar a operação de cada comando. Os dados podem ser persistidos após cada operação de comando
  1. Edite o arquivo redis.windwos.conf
    appendonly no (desative aof) -->appendonly yes (ative aof)
    #appendfsync sempre: a persistência é executada para cada operação
    appendfsync everysec: a persistência é executada a cada segundo
    #appendfsync no: não executada Persistência

Aqui encontramos o modo adicional APPEND ONLY MODE,
Insira a descrição da imagem aqui
selecione para ativar aof
appendonly yes (ativar aof),
Insira a descrição da imagem aqui
role um pouco para baixo e encontre a configuração de granularidade de persistência correspondente a aof. Podemos descobrir que a granularidade de persistência de aof é muito pequena, muito bom, mas também muito O consumo de recursos depende dos dados do negócio.
Insira a descrição da imagem aqui
Aqui ainda iniciamos o redis com os parâmetros do arquivo de configuração, e fazemos quaisquer configurações de valor-chave, adicionamos e modificamos.
Insira a descrição da imagem aqui
Após iniciar, é gerado diretamente o arquivo .aof, que é o arquivo que armazena os registros do comando. O tamanho é pequeno porque temos sem operações. é 0, podemos fazer algumas operações: podemos
Insira a descrição da imagem aqui
descobrir que seu tamanho mudou. Fechamos o servidor e o abrimos novamente para ver se o valor da chave ainda está lá
Insira a descrição da imagem aqui
.

6. Operação Jedis do cliente Java Redis

Jedis: Uma ferramenta Java para operar o banco de dados redis. Você pode usá-la após baixar o pacote jar do jedis.
Exemplo simples:

public class JedisTest {
    
    

    @Test
    public void test() {
    
    

        // 获取连接
        Jedis jedis = new Jedis("localhost", 6379);

        // 操作

        /**
         * String类型操作
         * 添加,修改:set
         * 获取(单个):get
         * 删除:del
          */
        jedis.set("name", "zhangsan");
        String name = jedis.get("name");
        jedis.del("name");
        // 设置带失效时间的key-value
        jedis.setex("code", 20, "cfl777");

        /**
         * hash类型操作
         * 添加,删除:hset
         * 获取(单个):hget
         * 删除:hdel
         * 获取(全部):hgetall
         */
        jedis.hset("person", "name", "cfl");
        jedis.hset("person", "age", "23");
        String hget = jedis.hget("person", "name");
        Map<String, String> person = jedis.hgetAll("person");
        jedis.hdel("person", "name");

        /**
         * list类型操作
         * 添加:lpush,rpush
         * 获取(范围):lrange start end
         * 删除:rpop,lpop
         */
        jedis.lpush("list", "aaa");
        jedis.lpush("list", "bbb");
        jedis.rpush("list", "ccc");
        List<String> list = jedis.lrange("list", 0, -1);
        String lpop = jedis.lpop("list");
        String rpop = jedis.rpop("list");

        /**
         * set类型操作 不允许重复元素
         * 添加:sadd
         * 获取(全部):smembers
         * 删除:srem
         */
        jedis.sadd("myset", "aaa", "bbb");
        Set<String> myset = jedis.smembers("myset");
        jedis.srem("myset", "aaa");

        /**
         * sortedSet 带排序(得分)的set → ztree → z
         * 添加:zadd
         * 获取(范围):zrange
         * 删除:zrem
         * 可选项:withscores,表示元素值得同时表示出其得分(排序)
         */
        jedis.zadd("zset", 3, "aaa");
        jedis.zadd("zset", 1, "bbb");
        jedis.zadd("zset", 2, "ccc");
        Set<String> zset = jedis.zrange("zset", 0, -1);
        Set<Tuple> zset1 = jedis.zrangeWithScores("zset", 0, -1);
        jedis.zrem("zset", "bbb");

        /**
         * 通用方法
         */
        // 通过正则获取匹配到的key
        Set<String> keys = jedis.keys("*");
        // 直接删除对应key的元素
        jedis.del("key");
        // 获取此key对应的元素值类型
        String type = jedis.type("key");

        // 关闭连接
        jedis.close();

    }

}

E o pool de conexões fornecido pelo próprio Jedis:

public class JedisPoolTest {
    
    

    public static void main(String[] args) {
    
    

        // 创建连接池配置文件
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(50);
        // ...

        // 创建连接池
        JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379);

        // 获取连接
        Jedis jedis = jedisPool.getResource();

        // 使用...

        // 关闭连接,归还至连接池
        jedis.close();

    }

}

7.Alface cliente avançado Redis

Gostaria de mencionar o Lettuce aqui. Embora, como os Jedis, sejam encapsulamentos Java de comandos de operação redis, o Lettuce foi reconhecido pelo ecossistema Spring e foi integrado ao driver spring-data-redis. Ele deve ter suas próprias vantagens. O autor tem apenas um breve entendimento aqui, então aqui está um link que li antes e achei muito bom, para que possamos aprender e encorajar uns aos outros: Explicação detalhada do
cliente avançado Redis Lettuce

Acho que você gosta

Origin blog.csdn.net/cjl836735455/article/details/109142253
Recomendado
Clasificación