Utilisation de base de Redis !

Table des matières

1. Notions de base :

1. Installation et démarrage de Redis

télécharger

Structure du répertoire

3. Commande Redis (emphase)

Structure de données Redis

 1.String chaîne (emphase)

2. Hachage de hachage (emphase)

 3.Ensemble de collecte

 4. Collection ZSet

commande commune

4. L'utilisation de base (compréhension) de Jedis est équivalente à JDBC

API Jedis

5. Spring Data Redis (emphase *****)

Manipuler les données de type hachage

Manipulation des données de type liste

Données de type de collecte d'opérations (étendues)

Exploiter les données de type collection ordonnée (étendu)

Fonctionnement général (doit maîtriser)


1. Notions de base :

1. Présentation de Redis : 

        Redis est une base de données basée sur la clé mémoire  = structure de valeur

Numéro de port : 6379

 2. Caractéristiques principales :

        1. Stockage en mémoire, performances de lecture et d'écriture élevées - La vitesse de lecture Redis est de 110 000 fois/s

        2. Il stocke des types de valeur riches (5 types de données), également appelés base de données structuréeNoSQL

        3.  Convient pour stocker des données à chaud et qui ne changent pas tout le temps (marchandises, informations, actualités)

 3. Introduction à NoSQL

        NoSQL (Not Only SQL) n'est pas seulement SQL, se réfère généralement à == base de données non relationnelle ==

Base de données relationnelle (Mysql, Oracle, etc.)

        avantage:

                1. Facile à entretenir : tous utilisent une structure de table et un format uniforme

                2. Facile à utiliser : le langage SQL est universel

                3. Requête multi-tables : peut être utilisée pour des requêtes très complexes entre une table ou plusieurs tables

        défaut:

                1. Stocké sur le disque dur, la capacité de lecture et d'écriture est donc relativement faible

                2. Structure de table fixe, faible flexibilité

                3. Exigences élevées en matière de lecture et d'écriture simultanées, les E/S du disque dur constituent un gros goulot d'étranglement

Bases de données non relationnelles (redis, MongoDB, etc.)

        avantage:

                1. Format flexible : le format des données stockées peut être une clé, une valeur et d'autres scénarios d'application.

                2. Vitesse rapide : nosql peut utiliser le disque dur ou la mémoire comme support au lieu du disque dur ;

                3. Faible coût : le déploiement de la base de données nosql est simple, fondamentalement gratuit ;

        défaut:

                1. Il ne fournit pas de support SQL et le coût d'apprentissage et d'utilisation est relativement élevé.

                2. Généralement pas de traitement des transactions

                3. Absence de requête complexe

1. Installation et démarrage de Redis

télécharger

 

Structure du répertoire

répertoire ou fichier effet
redis-benchmark outils de test de performances
redis-check-aof Outil de réparation de fichiers AOF
redis-check-dump Outil de vérification de fichier RDB (fichier persistant d'instantané)
redis-cli client en ligne de commande
serveur redis Démarrer le serveur redis
redis.windows.conf fichier de configuration principal redis

 

Démarrez le service :

 Lancez la ligne de commande :

3. Commande Redis (emphase)

Structure de données Redis

Redis utilise le stockage de paires clé-valeur. Le type de clé (clé) ne peut être qu'une chaîne, et la valeur (valeur) prend en charge cinq types de données :

  • Chaîne : Chaîne

  • Hachage : HashMap

  • Liste doublement liée : LinkedList

  • Collection non ordonnée : HashSet

  • Collection ordonnée : LinkedHashSet

 1.String chaîne (emphase)

  Le type de chaîne est le type de stockage de données le plus basique dans Redis

    * Ajout  de la valeur de la clé définie
    * Requête   pour obtenir la clé

    * Supprimer  la clé de suppression

    * Définir le délai d'expiration lors de l'ajout (code de vérification)  de la deuxième valeur de la clé setex
    * Vérifier le temps restant    clé ttl        
    * Déterminer si l'enregistrement existe selon la clé    existe clé    0 : n'existe pas 1 : existe

2. Hachage de hachage (emphase)

Le type Hash est très similaire à Map en java, où un groupe de paires clé-valeur peut être stocké dans la valeur

Ce type est très approprié pour stocker des informations sur des objets en Java

* Ajouter la clé hset hkey hvalue
        
* Interroger toutes les clés hgetall
          une seule clé hget hkey
* Supprimer  
    
Supprimer une clé à valeur unique hdel key hkey
delete redis key del key 
        
* get all hkey hkeys key 
        
* get all hvalue hvals key         
* Ajouter         la valeur de la touche
    push gauche push     push droite         la valeur de la touche push * longueur de la liste clé         llen         * élément de requête         clé lrange [index de début index de fin]                       0 -1



        
        


        


* Supprimer l'élément
    gauche popup
        touche lpop
    droite popup
        touche rpop

 3.Ensemble de collecte

La couche inférieure du type Set est une table de hachage. Les éléments à l'intérieur sont désordonnés et non répétables

* Ajouter
        la valeur de la clé sadd
    
 * Interroger le nombre de
        clés de récupération    de la collection
    
* Interroger
        la clé smembers de l'élément
                
* Supprimer    
        la valeur de la clé srem de l'élément

 4. Collection ZSet

Zset, également connu sous le nom de sortedSet, ajoute une fonction ordonnée sur la base de Set. Lors de l'ajout d'éléments, il est permis de spécifier un score, et il sera trié en fonction de ce score.

* Ajout
        de la valeur du score de la clé zadd
        
* Interroger la clé zrange
    croissante
        [index de début index de fin] [withscores]  clé zrevrange
    décroissante    
        [index de début index de fin] [withscores] 

* supprimer
        la valeur de la clé zrem

commande commune

* Clés de requête floues
        *

* supprimer la clé
        de la clé....

* Déterminez la 
        clé de type de type de valeur en fonction de la clé

* Sélectionnez la base de données
        sélectionnez 0 ~ 15

* Effacer la base de données actuelle
        flushdb

* Vider toutes les bases de données
        flushall

4. L'utilisation de base (compréhension) de Jedis est équivalente à JDBC

Redis existe en tant qu'excellent serveur de cache. La plupart des langages fournissent des packages de pilotes pour se connecter à Redis. En java, les plus connus sont Jedis et Redisson. Aujourd'hui, nous prendrons Jedis comme exemple pour apprendre à utiliser des programmes pour faire fonctionner redis.

API Jedis

méthode expliquer
nouveau Jedis (hôte, port) Créez un objet jedis, le paramètre host est l'adresse du serveur redis et le paramètre port est le port du service redis
ensemble (clé, valeur) Définir les données de type chaîne
Obtenir la clé) Obtenir des données de type chaîne
hset(clé,champ,valeur) Définir les données du type de hachage
hget(clé,champ) Obtenir des données de type hachage
lpush(clé,valeurs) Définir les données de type liste
lpop(clé) Pop la pile sur le côté gauche de la liste
rpop (clé) Pop la pile sur le côté droit de la liste
sup (clé) supprimer la clé spécifiée

<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();
    }

 Pool de connexion 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 (emphase *****)

introduire:

Spring Data Redis facilite la configuration et l'accès à Redis à partir des applications Spring

En RedisTemplateencapsulant fortement les Jedis sous-jacents, il fournit diverses opérations de redis

  • ValueOperations : opération de paire clé-valeur simple Chaîne


  • SetOperations : ensemble d'opérations de données de type ensemble


  • ZSetOperations : opération de données de type zset ensemble trié---->zset


  • HashOperations : hachage pour les opérations de données de type hachage


  • ListOperations : exploite la liste pour les données de type liste

Construction de l'environnement

1. Dépendance

<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. Fichier de configuration

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 Valeur de fonctionnement

        // 操作字符串类型
@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");

}

Manipuler les données de type hachage

// 操作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");
}

Manipulation des données de type liste

// 操作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"));
    }

}

Données de type de collecte d'opérations (étendues)

// 操作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");

}

Exploiter les données de type collection ordonnée (étendu)

// 操作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);
    }

}

Fonctionnement général (doit maîtriser)

// 通用操作
@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());
}

Je suppose que tu aimes

Origine blog.csdn.net/weixin_50769390/article/details/127134134
conseillé
Classement