Maison >base de données >Redis >Comment SpringBoot intègre l'API d'opération Redis

Comment SpringBoot intègre l'API d'opération Redis

PHPz
PHPzavant
2023-05-29 18:19:131076parcourir

SpringDataRedis appelle l'interprétation sous-jacente de Redis

  • Avant SpringBoot2

  • Jedis : l'utilisation d'une connexion directe, le fonctionnement multithread est dangereux. Si vous souhaitez éviter tout risque, utilisez le pool de connexion au pool Jedis ; Netty est utilisé comme couche inférieure et les instances peuvent être partagées entre plusieurs threads. Pour des raisons de sécurité, NIO
  • SpringBoot intègre Redis (analyse du code source) ;
  • Comment SpringBoot intègre lAPI dopération Redis

    Toutes les classes de configuration de SpringBoot ont une classe de configuration automatique
      Les classes de configuration automatiques seront liées à un fichier de propriétés
    • Trouver Spring.factories

    dans le code source , recherchez redis dedans, recherchez AutoConfiguration
  • Appuyez sur ctrl+clic pour entrer dans la classe

  • Comment SpringBoot intègre lAPI dopération Redis

  • Trouvez redisproperties.class

  • Comment SpringBoot intègre lAPI dopération Redis

  • ctrl+ cliquez pour entrer

  • Comment SpringBoot intègre lAPI dopération Redis

  • Il y a toutes les configurations liées à Redis, jetez-y un bref coup d'œil d'abord, et nous parlerons des autres plus tard

  • Comment SpringBoot intègre lAPI dopération Redis

  • Beans injectés par défaut

  • Comment SpringBoot intègre lAPI dopération Redis

  • Mais le redisTemplate par défaut a quelques problèmes. Sa clé est de type Object, mais les clés générales que nous attendons sont de type String, qui nécessite des types convertis, donc comme mentionné ci-dessus, vous pouvez définir le. RedisModèle vous-même

  • Lors de la configuration du fichier de configuration, si vous devez configurer le pool de connexions, utilisez lettuce. Ne configurez pas Redis directement s'il est configuré

    Comment SpringBoot intègre lAPI dopération Redis

  • View injection Il existe deux sous-classes de RedisConnectionFactory.
  • Comment SpringBoot intègre lAPI dopération Redis

  • , à savoir JedisConnectionFactory et LettuceConnectionFactory
  • car la classe JedisConnectionFactory dépend de De nombreuses classes n'existent pas, elles ne peuvent donc pas être utilisées directement

    .

  • Comment SpringBoot intègre lAPI dopération Redis

  • sont tous bordés de rouge et les dépendances dans lettuceConnectionFactory sont toutes là

  • Comment SpringBoot intègre lAPI dopération Redis

  • donc lors de la configuration, utilisez lettuce

  • Comment SpringBoot intègre lAPI dopération Redis

  • Ne configurer les jedis directement

  • Comment SpringBoot intègre lAPI dopération Redis

  • SpringBoot intègre Redis (configuration)

    yml
  • Comment SpringBoot intègre lAPI dopération RedisCopier les propriétés pour créer un fichier de configuration au format yml, j'aime toujours beaucoup yml

  • spring:
      redis:
        host: localhost
        port: 6379
    Comment SpringBoot intègre lAPI dopération RedisMaven

    在项目创建的时候选择,如果没有选择就添加
    <dependency>
      <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
  • Écrire un test

Ouvrez la classe de test créée par SpringBoot par défaut

  • Comment SpringBoot intègre lAPI dopération RedisredisTemp Les méthodes d'exploitation des types de données commencent toutes par opsFor, suivi du type

  • Pour Par exemple, opsForValue fonctionne sur des chaînes

  • Ensuite, l'application suivante est la même que l'API écrite auparavant

  • Comment SpringBoot intègre lAPI dopération Redis

  • 常用的操作可以直接点就可以了

  • 关于事物的

redisTemplate.unwatch();
redisTemplate.watch("key");
redisTemplate.multi();
redisTemplate.discard();
redisTemplate.exec();

关于数据库的操作需要获取链接后使用连接对象操作

RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();connection.flushAll();connection.flushDb();connection.close();

测试代码及其执行结果

package co.flower.redis02springboot;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.connection.RedisConnection;import org.springframework.data.redis.core.RedisTemplate;

@SpringBootTestclass Redis02SpringbootApplicationTests {/** * 我居然直接就指定了泛型 RedisTemplate<String,Object>结果就直接报错了,删除泛型后成功     */@Autowiredprivate RedisTemplate redisTemplate;

    @Testvoid contextLoads() {// 英文测试redisTemplate.opsForValue().set("name","xiaojiejie");
        System.out.println(redisTemplate.opsForValue().get("name"));// 中文测试redisTemplate.opsForValue().set("name","小姐姐");
        System.out.println(redisTemplate.opsForValue().get("name"));
    }

}

执行结果,SpringBoot的启动加载和结束销毁没有粘贴/***SpringBootStart****/xiaojiejie
小姐姐/***SpringBootStop*****/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer