设置配置类
@Configuration
public class RedisConfig {
@Value("${spring.data.redis.host}")
private String host;
@Value("${spring.data.redis.port}")
private int port;
@Value("${spring.data.redis.password}")
private String password;
@Value("${spring.data.redis.database}")
private int database;
@Value("${spring.data.redis.jedis.pool.max-active}")
private int maxActive;
@Value("${spring.data.redis.jedis.pool.max-idle}")
private int maxIdle;
@Value("${spring.data.redis.jedis.pool.min-idle}")
private int minIdle;
@Value("${spring.data.redis.jedis.pool.max-wait-millis}")
private int maxWaitMillis;
@Bean
public JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(maxActive);
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMinIdle(minIdle);
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
return jedisPoolConfig;
}
@Bean
public RedisConnectionFactory redisConnectionFactory() {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName(host);
jedisConnectionFactory.setPort(port);
jedisConnectionFactory.setPassword(password);
jedisConnectionFactory.setDatabase(database);
jedisConnectionFactory.setPoolConfig(jedisPoolConfig());
return jedisConnectionFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory)
{
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
// 使用 Jackson2JsonRedisSerializer 序列化值
Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
template.setValueSerializer(serializer);
template.setHashValueSerializer(serializer);
// 使用 StringRedisSerializer 序列化键
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
return template;
}
}
这里要使用Jackson2JsonRedisSerializer,
不建议使用GenericJackson2JsonRedisSerializer
Jackson2JsonRedisSerializer 序列化的结果是
{"name":"张三","age":30}
GenericJackson2JsonRedisSerializer序列化的结果是
{"@class":"com.example.SerializerTest$Person","name":"张三","age":30}
配置 application-redis.properties 文件
# 指定 Redis 服务器的主机地址,这里配置为本地回环地址。
spring.data.redis.host=127.0.0.1
# 指定 Redis 服务器监听的端口号,6379 是 Redis 默认端口
spring.data.redis.port=6379
# 设置连接 Redis 服务器所需的密码
spring.data.redis.password=000000
# 指定要使用的 Redis 数据库索引,Redis 可包含多个逻辑数据库,默认为 0。
spring.data.redis.database=0
# 连接池的最大活跃连接数,达到该值后若再获取连接,可能会阻塞或报错。
spring.data.redis.jedis.pool.max-active=100
# 连接池允许的最大空闲连接数,超过此数的空闲连接会被释放。
spring.data.redis.jedis.pool.max-idle=10
# 连接池保持的最小空闲连接数,确保一定数量的空闲连接随时可用。
spring.data.redis.jedis.pool.min-idle=10
# 从连接池获取连接时的最大等待时间(毫秒),超时将抛出异常。
spring.data.redis.jedis.pool.max-wait-millis=2000