1、添加pom依赖:
注意:建议不要使用spring-boot-starter-redis,此包Jun, 2017后已停止维护
示例:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> <version>${spring-boot.version}</version> </dependency>
2、redis配置:
示例:
spring: redis: database: 1 jedis: pool: max-active: 8 max-wait: -1 max-idle: 8 min-idle: 0 timeout: 10000 cluster: #如果是redis集群使用此配置 nodes: - 127.0.0.1:9001 - 127.0.0.1:9002 - 127.0.0.1:9003 host: 172.16.0.7 #如果是单机redis使用一下配置 port: 6379 password: 123
3、redis使用:
(1)spring-boot已经定义了redisTemplate、stringRedisTemplate两个bean,可以直接使用也可自行定义
package org.springframework.boot.autoconfigure.data.redis; import java.net.UnknownHostException; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; /** * {@link EnableAutoConfiguration Auto-configuration} for Spring Data's Redis support. * * @author Dave Syer * @author Andy Wilkinson * @author Christian Dupuis * @author Christoph Strobl * @author Phillip Webb * @author Eddú Meléndez * @author Stephane Nicoll * @author Marco Aust * @author Mark Paluch */ @Configuration @ConditionalOnClass(RedisOperations.class) @EnableConfigurationProperties(RedisProperties.class) @Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class }) public class RedisAutoConfiguration { @Bean @ConditionalOnMissingBean(name = "redisTemplate") public RedisTemplate<Object, Object> redisTemplate( RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { RedisTemplate<Object, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); return template; } @Bean @ConditionalOnMissingBean public StringRedisTemplate stringRedisTemplate( RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { StringRedisTemplate template = new StringRedisTemplate(); template.setConnectionFactory(redisConnectionFactory); return template; } }
(2)此处自行定义了一个泛型为<String,Object>的redisTemplate(个人感觉更实用),示例如下:
package com.longc.core.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; 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.RedisOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; /** * redis配置 * Created by log.chang on 2019/6/26. */ @Configuration @ConditionalOnClass(RedisOperations.class) @EnableConfigurationProperties(RedisProperties.class) public class RedisConfig { /** * 定义redisTemplate * 如果在配置文件中定义配置如下: * <bean id="jedisConnectionFactory" * class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> * <property name="hostName" value="${redis.hostName}"/> * <property name="port" value="${redis.port}"/> * <property name="password" value="${redis.password}"/> * <property name="database" value="${redis.database}"/> * <property name="poolConfig"> * <bean class="redis.clients.jedis.JedisPoolConfig"> * <property name="maxTotal" value="${redis.pool.maxTotal}"/> * <property name="maxIdle" value="${redis.pool.maxIdle}"/> * <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}"/> * <property name="timeBetweenEvictionRunsMillis" value="${redis.pool.timeBetweenEvictionRunsMillis}"/> * <property name="minEvictableIdleTimeMillis" value="${redis.pool.minEvictableIdleTimeMillis}"/> * <property name="testOnBorrow" value="${redis.pool.testOnBorrow}"/> * </bean> * </property> * </bean> * <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> * <property name="connectionFactory" ref="jedisConnectionFactory"/> * <property name="keySerializer"> * <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/> * </property> * <property name="valueSerializer"> * <bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"/> * </property> * <property name="hashKeySerializer"> * <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/> * </property> * <property name="hashValueSerializer"> * <bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"/> * </property> * </bean> */ @Bean @SuppressWarnings("all") public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<String, Object>(); template.setConnectionFactory(factory); Jackson2JsonRedisSerializer 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); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); // key采用String的序列化方式 template.setKeySerializer(stringRedisSerializer); // hash的key也采用String的序列化方式 template.setHashKeySerializer(stringRedisSerializer); // value序列化方式采用jackson template.setValueSerializer(jackson2JsonRedisSerializer); // hash的value序列化方式采用jackson template.setHashValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); return template; } }
(3)封装redis工具类
可以参考 https://www.cnblogs.com/zeng1994/p/03303c805731afc9aa9c60dbbd32a323.html 还是挺全的