关于 Redis 配置

设置配置类

@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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容