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) ; -
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
- Trouvez redisproperties.class
-
- ctrl+ cliquez pour entrer
- 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
- Beans injectés par défaut
- 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é
View injection Il existe deux sous-classes de RedisConnectionFactory.
, à 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
.
-
- sont tous bordés de rouge et les dépendances dans lettuceConnectionFactory sont toutes là
- donc lors de la configuration, utilisez lettuce
-
- Ne configurer les jedis directement
-
- SpringBoot intègre Redis (configuration)yml
Copier 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
Maven 在项目创建的时候选择,如果没有选择就添加
<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
- Pour Par exemple, opsForValue fonctionne sur des chaînes
- Ensuite, l'application suivante est la même que l'API écrite auparavant
常用的操作可以直接点就可以了
关于事物的
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!