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>
\