环境准备

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>2.7.17</version>
</dependency>

RedisConfig.java

package com.x5dtech.srsp.config;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * Redis 配置类,主要配置序列化方式
 */
@Configuration
public class RedisConfig {

    /**
     * 自定义 RedisTemplate,解决默认序列化问题
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);

        // Key 序列化器(String 类型)
        StringRedisSerializer keySerializer = new StringRedisSerializer();
        template.setKeySerializer(keySerializer);
        template.setHashKeySerializer(keySerializer);

        // Value 序列化器(Jackson,核心配置)
        ObjectMapper objectMapper = new ObjectMapper();
        // 关键:不启用任何类型信息嵌入(不调用 activateDefaultTyping)
        objectMapper.findAndRegisterModules(); // 仅注册必要模块(如时间类型支持)

        GenericJackson2JsonRedisSerializer valueSerializer = new GenericJackson2JsonRedisSerializer(objectMapper);
        template.setValueSerializer(valueSerializer);
        template.setHashValueSerializer(valueSerializer);

        template.afterPropertiesSet();
        return template;
    }

}

application.yml

spring:
  redis:
    host: 127.0.0.1
    database: 0
    password: Admin@123
    port: 6379
    lettuce: # Lettuce客户端配置
      pool:
        max-active: 50  # 最大连接数(根据并发量调整,如CPU核心数*2)
        max-idle: 16     # 最大空闲连接(保持一定空闲连接,避免频繁创建)
        min-idle: 16    # 最小空闲连接
        max-wait: 1000ms

zset 使用

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐