springboot集成redis配置及使用
首页引入redis依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.12</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
配置文件
spring: redis: host: XXXXXX port: 6379 password: XXXXXXX database: X pool: max-active: 100 max-idle: 10 max-wait: 100000
编写一个配置文件映射类
@Configuration @ConfigurationProperties(prefix = "spring.redis") @Data public class RedisPO { private String host; private int port; private String password; private int database; }
然后就是redis配置类
import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import com.luky.config.po.RedisPO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisStandaloneConfiguration; import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import redis.clients.jedis.JedisPoolConfig; import java.time.Duration; @Configuration public class RedisConfig { @Autowired private RedisPO redisPO; /** * redis链接工厂 */ @Bean public RedisConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration redis = new RedisStandaloneConfiguration(redisPO.getHost(), redisPO.getPort()); redis.setDatabase(redisPO.getDatabase()); redis.setPassword(redisPO.getPassword()); JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jedis = (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder) JedisClientConfiguration.builder(); jedis.poolConfig(getRedisConfig()); JedisClientConfiguration jedisClientConfiguration = jedis.build(); return new JedisConnectionFactory(redis, jedisClientConfiguration); } @Bean //Qualifier 要求bean有且只有一个 public RedisTemplate<?, ?> redisTemplate(@Qualifier("redisConnectionFactory") RedisConnectionFactory redisConnectionFactory) { RedisTemplate<?, ?> redisTemplate = new RedisTemplate<>(); Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = getJackson2JsonRedisSerializer(); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } private Jackson2JsonRedisSerializer<Object> getJackson2JsonRedisSerializer() { Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); return jackson2JsonRedisSerializer; } public JedisPoolConfig getRedisConfig() { JedisPoolConfig jedis = new JedisPoolConfig(); jedis.setMaxTotal(50); //链接最大数 默认是8 jedis.setMaxIdle(10); //允许最大空闲的链接数量 默认8 jedis.setMaxWait(Duration.ofSeconds(1000)); return jedis; } }
之后就可以在任意地方引入不同类型的reids,例如
@Autowired private RedisTemplate<String, Object> redisTemplate;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~