Uso básico do Redis!

Índice

1. Conceitos básicos:

1. Instalação e inicialização do Redis

download

Estrutura de Diretórios

3. Comando Redis (ênfase)

Estrutura de dados do Redis

 1. String string (ênfase)

2. Hash hash (ênfase)

 3. Definir coleção

 4. Coleção ZSet

comando comum

4. O uso básico (entendimento) de Jedis é equivalente ao JDBC

API do Jedi

5. Spring Data Redis (ênfase *****)

Manipular dados do tipo hash

Manipulando dados de tipo de lista

Dados do tipo de coleta de operação (estendido)

Operar dados de tipo de coleta ordenados (estendido)

Operação geral (deve dominar)


1. Conceitos básicos:

1. Introdução ao Redis: 

        Redis é um banco de dados baseado em chave de memória  = estrutura de valor

Número da porta: 6379

 2. Principais características:

        1. Armazenamento de memória, alto desempenho de leitura e gravação - a velocidade de leitura do Redis é de 110.000 vezes/s

        2. Armazena tipos ricos de valor (5 tipos de dados), também conhecidos como banco de dados estruturadoNoSQL

        3.  Adequado para armazenar dados quentes e que não mudam o tempo todo (commodities, informações, notícias)

 3. Introdução ao NoSQL

        NoSQL (Not Only SQL) não é apenas SQL, geralmente se refere a == banco de dados não relacional ==

Banco de dados relacional (Mysql, Oracle, etc.)

        vantagem:

                1. Fácil de manter: todos usam estrutura de mesa e formato uniforme

                2. Fácil de usar: a linguagem SQL é universal

                3. Consulta multitabela: pode ser usada para consultas muito complexas entre uma tabela ou várias tabelas

        deficiência:

                1. Armazenado no disco rígido, portanto, a capacidade de leitura e gravação é relativamente ruim

                2. Estrutura fixa da mesa, pouca flexibilidade

                3. Altos requisitos simultâneos de leitura e gravação, E/S de disco rígido é um grande gargalo

Bancos de dados não relacionais (redis, MongoDB, etc.)

        vantagem:

                1. Formato flexível: o formato dos dados armazenados pode ser chave, valor e outros cenários de aplicação.

                2. Velocidade rápida: o nosql pode usar o disco rígido ou a memória como portadora em vez do disco rígido;

                3. Baixo custo: a implantação do banco de dados nosql é simples, basicamente gratuita;

        deficiência:

                1. Ele não fornece suporte SQL e o custo de aprendizado e uso é relativamente alto.

                2. Geralmente não há processamento de transações

                3. Falta de consulta complexa

1. Instalação e inicialização do Redis

download

 

Estrutura de Diretórios

diretório ou arquivo efeito
redis-benchmark ferramentas de teste de desempenho
redis-check-aof Ferramenta de reparo de arquivo AOF
redis-check-dump Ferramenta de verificação de arquivo RDB (arquivo persistente de instantâneo)
redis-cli cliente de linha de comando
servidor redis Inicie o servidor redis
redis.windows.conf arquivo de configuração principal do redis

 

Inicie o serviço:

 Inicie a linha de comando:

3. Comando Redis (ênfase)

Estrutura de dados do Redis

O Redis usa armazenamento de pares chave-valor. O tipo de chave (chave) pode ser apenas uma string e o valor (valor) oferece suporte a cinco tipos de dados:

  • Cadeia: Cadeia

  • Hash: HashMap

  • Lista duplamente ligada: LinkedList

  • Coleção não ordenada: HashSet

  • Coleção ordenada: LinkedHashSet

 1. String string (ênfase)

  O tipo string é o tipo de armazenamento de dados mais básico no Redis

    * Adicionado  valor da chave definida
    * Query   get key

    * Excluir  tecla del

    * Defina o tempo de expiração ao adicionar (código de verificação)  segundo valor da chave setex
    * Verifique o tempo restante    chave ttl        
    * Determine se o registro existe de acordo com a chave    existe chave    0: não existe 1: existe

2. Hash hash (ênfase)

O tipo Hash é muito semelhante ao Map em java, onde um grupo de pares chave-valor pode ser armazenado no valor

Este tipo é muito adequado para armazenar informações sobre objetos em java

* Adicionar chave hset hkey hvalue
        
* Consultar todas as chaves hgetall
          única chave hget hkey
* Excluir  
    
Excluir uma chave de valor único hdel key hkey
excluir redis key del key 
        
* obter todas as hkey hkeys key 
        
* obter todas as hvalue hvals key         
* Adicionar         o valor da tecla lpush
    do botão esquerdo         o valor da chave rpush do botão     esquerdo * tamanho da lista         chave llen         *         chave lrange do elemento de consulta [índice inicial índice final]                       0 -1



        
        


        


* Excluir elemento
    tecla
        lpop pop-up esquerda         tecla rpop
    pop-up direita

 3. Definir coleção

A camada inferior do tipo Conjunto é uma tabela de hash. Os elementos internos são desordenados e não repetíveis

* Adicionar
        valor da chave sadd
    
 * Consultar o número de
        chaves scard    de coleções
    
* Consultar
        a chave smembers do elemento
                
* Excluir    
        valor da chave srem do elemento

 4. Coleção ZSet

Zset, também conhecido como sortedSet, adiciona uma função ordenada com base em Set. Ao adicionar elementos, é permitido especificar uma pontuação, e ela será classificada de acordo com essa pontuação.

* Adicionado
        valor de pontuação da chave zadd
        
* Consultar chave zrange
    ascendente
        [índice inicial e final do índice] [com pontuações]  chave zrevrange
    descendente    
        [índice inicial e final do índice] [com pontuações] 

* excluir
        o valor da chave zrem

comando comum

* Chaves de chave de consulta difusa
        *

* delete key
        del key....

* Determine a 
        chave do tipo de tipo de valor de acordo com a chave

* Selecione banco de dados
        selecione 0~15

* Limpe o
        flushdb do banco de dados atual

* Esvaziar todos os bancos de dados
        flushall

4. O uso básico (entendimento) de Jedis é equivalente ao JDBC

O Redis existe como um excelente servidor de cache. A maioria das linguagens fornece pacotes de drivers para se conectar ao Redis. Em java, os mais famosos são o Jedis e o Redisson. Hoje vamos pegar o Jedis como exemplo para aprender a usar programas para operar o redis.

API do Jedi

método explicar
novos Jedis(host, porta) Crie um objeto jedis, o host do parâmetro é o endereço do servidor redis e a porta do parâmetro é a porta do serviço redis
set(chave,valor) Definir dados do tipo string
obter (chave) Obter dados do tipo string
hset(chave, campo, valor) Defina os dados do tipo de hash
hget(chave,campo) Obter dados do tipo hash
lpush(chave,valores) Definir dados do tipo de lista
lpop(tecla) Abra a pilha no lado esquerdo da lista
rpop(tecla) Abra a pilha no lado direito da lista
del(chave) excluir a chave especificada

<dependencies>
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.3</version>
    </dependency>
</dependencies>
 public static void main(String[] args) {
        // 1.创建连接
        Jedis jedis = new Jedis("127.0.0.1", 6379);

        // 2.新增
        jedis.set("1002", "李四");
      	//3.查询
        String value = jedis.get("1002");
        System.out.println(value);

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

 Piscina de conexões Jedis

  public static void main(String[] args) {
        // 0.创建连接池配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(50); // 最大连接数
        config.setMaxIdle(20); // 最大空闲数
        // 1.创建连接池
        JedisPool jedisPool = new JedisPool(config,"127.0.0.1",6379);
        // 2.获取连接
        Jedis jedis = jedisPool.getResource();
        // 3.进行 新增、修改、删除、查询

        // 4.归还连接
        jedis.close();
    }

5. Spring Data Redis (ênfase *****)

introduzir:

O Spring Data Redis fornece fácil configuração e acesso ao Redis a partir de aplicativos Spring

Ao RedisTemplateencapsular altamente os Jedis subjacentes, ele fornece várias operações de redis

  • ValueOperations: string de operação simples de par chave-valor


  • SetOperations: conjunto de operação de dados do tipo definido


  • ZSetOperations: operação de dados do tipo zset sortedset---->zset


  • HashOperations: hash para operações de dados do tipo hash


  • ListOperations: opera lista para dados do tipo lista

Construção do ambiente

1. Dependência

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.5</version>
</parent>

<dependencies>
  	<!-- SpringDataRedis框架-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

       <!-- spring测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
</dependencies>

2. Arquivo de configuração

spring:
  redis:
    host: localhost
    port: 6379
    database: 0 # 操作的是0号数据库
    jedis: #Redis连接池配置
      pool:
        max-active: 8 #最大连接数
        max-wait: 1ms #连接池最大阻塞等待时间
        max-idle: 4 #连接池中的最大空闲连接
        min-idle: 0 #连接池中的最小空闲连接

3. API

    @Autowired
    private RedisTemplate redisTemplate;//二进制(能取,在可视化工具中看不到数据)

    @Autowired
    private StringRedisTemplate stringRedisTemplate;//RedisTemplate 的子类 

3.1 Valor da operação

        // 操作字符串类型
@Test
public void test01() throws Exception {
    // 获取string操作对象
    ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();

    // 存值
    opsForValue.set("city", "北京");

    // 取值
     String value = opsForValue.get("city");
     System.out.println(value);

    // 存验证码存活5分钟
     opsForValue.set("sms_13700137000", "6375",TimeUnit.SECONDS);
  
   //删除
   redisTemplate.delete("city");

}

Manipular dados do tipo hash

// 操作hash类型
@Test
public void test02() throws Exception {
    // 获取hash操作对象
    HashOperations<String, Object, Object> opsForHash = stringRedisTemplate.opsForHash();

    // 存值
    //opsForHash.put("1005", "nage", "zhangsan");
    //opsForHash.put("1005", "age", "18");
    //opsForHash.put("1005", "sex", "man");

    // 取出年龄
    String age = (String) opsForHash.get("1005", "age");
    System.out.println(age);
    System.out.println("---------------");
    // 取出所有key
    Set<Object> keys = opsForHash.keys("1005");
    for (Object key : keys) {
        System.out.println(key);
      	if("sex".equals(key)){
               ops.delete("1005",key); //删除map中的key
        }
    }
    System.out.println("---------------");
    // 取出所有value
    List<Object> values = opsForHash.values("1005");
    for (Object value : values) {
        System.out.println(value);
    }

    // 删除
   stringRedisTemplate.delete("1005");
}

Manipulando dados de tipo de lista

// 操作list类型
@Test
public void test03() throws Exception {
    // 获取list操作对象
    ListOperations<String, String> opsForList = stringRedisTemplate.opsForList();

    // 存值
    //opsForList.leftPush("alist", "a");
    //opsForList.leftPush("alist", "b");
    opsForList.leftPushAll("alist", "a", "b");
    opsForList.rightPush("alist", "c");

    // 取值
    List<String> list = opsForList.range("alist", 0, -1);
    for (String s : list) {
        System.out.println(s);
    }
    System.out.println("--------------");
    // 获取list长度
    Long size = opsForList.size("alist");
    System.out.println(size);
    System.out.println("--------------");
    // 遍历删除
    for (Long i = 0l; i < size; i++) {
        // 弹出
        System.out.println(opsForList.rightPop("alist"));
    }

}

Dados do tipo de coleta de operação (estendido)

// 操作set类型
@Test
public void test04() throws Exception {
    // 获取set操作对象
    SetOperations<String, String> opsForSet = stringRedisTemplate.opsForSet();

    // 存值
    // opsForSet.add("lol", "a", "b", "c", "a");

    // 获取
    Set<String> lol = opsForSet.members("lol");
    for (String s : lol) {
        System.out.println(s);
    }

    // 删除
    opsForSet.remove("lol", "a");

}

Operar dados de tipo de coleta ordenados (estendido)

// 操作zset类型
@Test
public void test05() throws Exception {
    // 获取 zset操作对象
    ZSetOperations<String, String> opsForZSet = stringRedisTemplate.opsForZSet();

    // 存值
    // opsForZSet.add("wangzhe", "安其拉", 66.6);
    // opsForZSet.add("wangzhe", "兰陵王", 68.6);
    // opsForZSet.add("wangzhe", "后羿", 79.6);

    // 修改
    // opsForZSet.add("wangzhe", "安其拉", 85.6);

    // 删除
    opsForZSet.remove("wangzhe", "兰陵王");

    // 取值
    Set<String> wangzhe = opsForZSet.reverseRange("wangzhe", 0, -1);
    for (String s : wangzhe) {
        System.out.println(s);
    }

}

Operação geral (deve dominar)

// 通用操作
@Test
public void test06()throws Exception{
    // 查询所有key
    Set<String> keys = stringRedisTemplate.keys("*");
    for (String key : keys) {
        System.out.println(key);
    }
    // 判断某个key是否存在
    Boolean itheima = stringRedisTemplate.hasKey("1005");
    System.out.println(itheima);

    // 判断某个key的类型
    DataType type = stringRedisTemplate.type("1005");
    System.out.println(type.name());
}

Acho que você gosta

Origin blog.csdn.net/weixin_50769390/article/details/127134134
Recomendado
Clasificación