設(shè)置配置類
@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 序列化的結(jié)果是
{"name":"張三","age":30}
GenericJackson2JsonRedisSerializer序列化的結(jié)果是
{"@class":"com.example.SerializerTest$Person","name":"張三","age":30}
配置 application-redis.properties 文件
# 指定 Redis 服務(wù)器的主機(jī)地址,這里配置為本地回環(huán)地址。
spring.data.redis.host=127.0.0.1
# 指定 Redis 服務(wù)器監(jiān)聽的端口號(hào),6379 是 Redis 默認(rèn)端口
spring.data.redis.port=6379
# 設(shè)置連接 Redis 服務(wù)器所需的密碼
spring.data.redis.password=000000
# 指定要使用的 Redis 數(shù)據(jù)庫索引,Redis 可包含多個(gè)邏輯數(shù)據(jù)庫,默認(rèn)為 0。
spring.data.redis.database=0
# 連接池的最大活躍連接數(shù),達(dá)到該值后若再獲取連接,可能會(huì)阻塞或報(bào)錯(cuò)。
spring.data.redis.jedis.pool.max-active=100
# 連接池允許的最大空閑連接數(shù),超過此數(shù)的空閑連接會(huì)被釋放。
spring.data.redis.jedis.pool.max-idle=10
# 連接池保持的最小空閑連接數(shù),確保一定數(shù)量的空閑連接隨時(shí)可用。
spring.data.redis.jedis.pool.min-idle=10
# 從連接池獲取連接時(shí)的最大等待時(shí)間(毫秒),超時(shí)將拋出異常。
spring.data.redis.jedis.pool.max-wait-millis=2000