Redis整合Springboot

116 阅读1分钟
package com.example.demo.util;

import com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;

import java.time.Duration;

/**
 * @author 
 * @date 2021/7/5  16:42
 */
@Configuration
public class RedisConfig {

    @Value("${spring.demo.redis.host}")
    private String host;

    @Value("${spring.demo.redis.database}")
    private int dataBase;

    @Value("${spring.demo.redis.port}")
    private int port;

    public GenericObjectPoolConfig<Object> genericObjectPoolConfig() {
        GenericObjectPoolConfig<Object> configPool = new GenericObjectPoolConfig<>();
        configPool.setMaxIdle(80);
        configPool.setMaxTotal(100);
        configPool.setMinIdle(10);
        configPool.setMaxWaitMillis(10000L);
        return configPool;
    }

    @Bean(name = "redisTemplate")
    public RedisTemplate<String, Object> redisTemplate() {
        RedisStandaloneConfiguration poolConfig = new RedisStandaloneConfiguration();
        poolConfig.setDatabase(dataBase);
        poolConfig.setHostName(host);
        poolConfig.setPort(port);
        LettucePoolingClientConfiguration lpc = LettucePoolingClientConfiguration.builder().poolConfig(genericObjectPoolConfig())
                .commandTimeout(Duration.ofMillis(1000)).build();
        LettuceConnectionFactory factory = new LettuceConnectionFactory(poolConfig, lpc);
        factory.afterPropertiesSet();

        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(factory);
        GenericFastJsonRedisSerializer genericFastJsonRedisSerializer = new GenericFastJsonRedisSerializer();
        redisTemplate.setKeySerializer(RedisSerializer.string());
        redisTemplate.setValueSerializer(genericFastJsonRedisSerializer);
        redisTemplate.setHashKeySerializer(RedisSerializer.string());
        redisTemplate.setHashValueSerializer(genericFastJsonRedisSerializer);
        return redisTemplate;
    }
}
 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.5.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.10.0</version>
        </dependency>

\