Home  >  Article  >  Database  >  How to operate Redis in SpringBoot

How to operate Redis in SpringBoot

PHPz
PHPzforward
2023-05-26 12:25:141777browse

Option 1: Spring Data Redis creation project

Create the project and introduce Redis dependencies:

How to operate Redis in SpringBoot

Created successfully Finally, you need to manually introduce the dependency of commos-pool2, so the final complete pom.xml dependency is as follows:

<dependencies>
 <dependency>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-data-redis</artifactid>
 </dependency>
 <dependency>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-web</artifactid>
 </dependency>
</dependencies>
<dependency>
 <groupid>org.apache.commons</groupid>
 <artifactid>commons-pool2</artifactid>
</dependency>

The main purpose here is to introduce the Spring Data Redis connection pool.

Configuring Redis information

Next, configure the Redis information. The information includes two aspects, one is the basic information of Redis, and the other is the connection pool information:

spring.redis.database=0
spring.redis.password=123
spring.redis.port=6379
spring.redis.host=192.168.66.128
spring.redis.lettuce.pool.min-idle=5
spring.redis.lettuce.pool.max-idle=10
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=1ms
spring.redis.lettuce.shutdown-timeout=100ms

Automatic configuration

When the developer introduces Spring Data Redis into the project and configures the basic information of Redis, automatic configuration will take effect.

We can see the clues from the automated configuration class of Redis in Spring Boot:

@Configuration
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
public class RedisAutoConfiguration {
  @Bean
  @ConditionalOnMissingBean(name = "redisTemplate")
  public RedisTemplate<object> redisTemplate(
      RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
    RedisTemplate<object> template = new RedisTemplate();
    template.setConnectionFactory(redisConnectionFactory);
    return template;
  }
  @Bean
  @ConditionalOnMissingBean
  public StringRedisTemplate stringRedisTemplate(
      RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
    StringRedisTemplate template = new StringRedisTemplate();
    template.setConnectionFactory(redisConnectionFactory);
    return template;
  }
}</object></object>

This automated configuration class is easy to understand:

  1. First mark this as a configuration class, and the configuration will only take effect when RedisOperations exists (that is, Spring Data Redis is introduced in the project)

  2. Then import and configure in application.properties Properties

  3. Then import the connection pool information (if it exists)

  4. Finally, two beans are provided, RedisTemplate and StringRedisTemplate, where StringRedisTemplate is a subclass of RedisTemplate. The two methods are basically the same. The difference is mainly reflected in the different data types of operations. The two generics in RedisTemplate are both Object, which means that the stored key and value can be an object. The two generics of StringRedisTemplate are both String, which means that the key and value of StringRedisTemplate can only be strings. These two configurations will only take effect if the developer does not provide related beans. If the relevant Bean is provided, it will not take effect.

Use

Next, you can directly inject StringRedisTemplate or RedisTemplate into the Service to use:

@Service
public class HelloService {
 @Autowired
 RedisTemplate redisTemplate;
 public void hello() {
  ValueOperations ops = redisTemplate.opsForValue();
  ops.set("k1", "v1");
  Object k1 = ops.get("k1");
  System.out.println(k1);
 }
}

In Redis Data operations, generally speaking, can be divided into two types:

  1. Operations for key, the relevant methods are in RedisTemplate

  2. For For specific data type operations, the relevant methods need to first obtain the corresponding data type. The operation method to obtain the corresponding data type is opsForXXX

. Call this method to store the data in Redis. As follows:

How to operate Redis in SpringBoot

k1 The previous characters are caused by the use of RedisTemplate, which is the result of serializing the key.

In RedisTemplate, the default serialization scheme for key is JdkSerializationRedisSerializer.

In StringRedisTemplate, the default serialization scheme for key is StringRedisSerializer. Therefore, if you use StringRedisTemplate, there will be no prefix in front of key by default.

However, developers can also modify the serialization scheme in RedisTemplate by themselves, as follows:

@Service
public class HelloService {
 @Autowired
 RedisTemplate redisTemplate;
 public void hello() {
  redisTemplate.setKeySerializer(new StringRedisSerializer());
  ValueOperations ops = redisTemplate.opsForValue();
  ops.set("k1", "v1");
  Object k1 = ops.get("k1");
  System.out.println(k1);
 }
}

Of course, you can also use StringRedisTemplate directly:

@Service
public class HelloService {
 @Autowired
 StringRedisTemplate stringRedisTemplate;
 public void hello2() {
  ValueOperations ops = stringRedisTemplate.opsForValue();
  ops.set("k2", "v2");
  Object k1 = ops.get("k2");
  System.out.println(k1);
 }
}

In addition, it should be noted that Spring Boot For automated configuration, you can only configure Redis on a single machine. If it is a Redis cluster, everything needs to be configured manually. Regarding how to operate the Redis cluster, Brother Song will share with you later.

Option 2: Spring Cache

Operate Redis through Spring Cache. Spring Cache unifies the cache world. This kind of solution has been used by Brother Song before. A special article is introduced, friends can move here: In Spring Boot, Redis cache can still be used in this way! .

Option 3: Return to the original era

The third option is to directly use Jedis or other client tools to operate Redis. This option is available in Spring Boot It is also supported. Although it is troublesome to operate, it is supported

The above is the detailed content of How to operate Redis in SpringBoot. 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