Home >Database >Redis >How SpringBoot integrates Redis operation API

How SpringBoot integrates Redis operation API

PHPz
PHPzforward
2023-05-29 18:19:131076browse

SpringDataRedis calls Redis underlying interpretation

  • Before SpringBoot2.X, the officially recommended Jedis connection Redis was used directly

  • In 2 After . The operation is unsafe. If you want to avoid being unsafe, use the Jedis pool connection pool; BIO

  • lettuce: Netty is used as the bottom layer. The instance can be shared between multiple threads, and there is no thread incompatibility. In case of safety, the number of threads can be reduced; NIOHow SpringBoot integrates Redis operation API

    SpringBoot integrates Redis (source code analysis)
    • All configuration classes of SpringBoot, There is an automatic configuration class
    • The automatic configuration class will be bound to a properties file

Find Spring.factories

# in the source code
  • #Search for redis and find AutoConfiguration

  • ##Press ctrl and click to enter the classHow SpringBoot integrates Redis operation API

  • ##Find redisproperties.class

    How SpringBoot integrates Redis operation API

  • ctrl click to enter

    How SpringBoot integrates Redis operation API

  • ## It contains all the redis related configurations. Let’s take a brief look at it first, and we will talk about the others later.
  • How SpringBoot integrates Redis operation API

  • ##Bean injected by default
  • How SpringBoot integrates Redis operation API

  • But the default redisTemplate has some problems. Its key is of type Object, but the general key we expect They are all of type String, which requires forced type conversion, so as mentioned above, you can define RedisTemplate yourself
  • How SpringBoot integrates Redis operation APIWhen configuring the configuration file, if you need to configure the connection pool, use lettuce , do not configure Redis directly, it will not take effect if configured.

  • Check the RedisConnectionFactory during injection

  • How SpringBoot integrates Redis operation API

  • There are two subclasses, namely JedisConnectionFactory and LettuceConnectionFactory

  • #Because the JedisConnectionFactory class Many of the dependent classes do not exist, so you cannot use it directly. Dependencies are all existing

  • How SpringBoot integrates Redis operation API

  • so when configuring, use lettuce’s

  • How SpringBoot integrates Redis operation API

  • Do not directly configure jedis’s

  • How SpringBoot integrates Redis operation API

  • SpringBoot integration Redis (configuration)

  • yml
  • How SpringBoot integrates Redis operation API

    Copy the properties to create a configuration file in yml format. I still like yml
  • How SpringBoot integrates Redis operation API

    spring:
      redis:
        host: localhost
        port: 6379

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

  • Open the test class created by SpringBoot by default

    How SpringBoot integrates Redis operation API

redisTemp’s methods of operating data types all start with opsFor, followed by the type
  • How SpringBoot integrates Redis operation API

    For example, opsForValue is to operate strings

Then the subsequent application will be the same as the API written before

  • How SpringBoot integrates Redis operation API

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

  • 关于事物的

  • 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*****/

    The above is the detailed content of How SpringBoot integrates Redis operation API. For more information, please follow other related articles on the PHP Chinese website!

    Statement:
    This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete