<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
RedisConfiguration
import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; @Configuration public class RedisConfiguration { @Bean(name = "pool") protected JedisPool jedisPool(JedisPoolConfig jedisPoolConfig, @Value("${spring.redis.host}") String host, @Value("${spring.redis.port}") int port, @Value("${spring.redis.password}") String password, @Value("${spring.redis.database}") int database) { return new JedisPool(jedisPoolConfig, host, port, 15000, password, database); } @Bean public JedisPoolConfig jedisPoolConfig(@Value("${spring.redis.config.maxTotal}") int maxTotal, @Value("${spring.redis.config.maxIdle}") int maxIdle, @Value("${spring.redis.config.maxWaitMillis}") int maxWaitMillis) { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(maxTotal); config.setMaxIdle(maxIdle); config.setMaxWaitMillis(maxWaitMillis); config.setMinEvictableIdleTimeMillis(300000); config.setNumTestsPerEvictionRun(3); config.setTimeBetweenEvictionRunsMillis(60000); return config; } }
SessionConfig
import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.session.data.redis.config.ConfigureRedisAction; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; /** * @param * @Description:共享session * @Author:SimonHu * @Date: 2020/5/18 11:59 * @return */ @Configuration @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)//maxInactiveIntervalInSeconds设置session有效时间,单位是秒;默认是30分钟 public class SessionConfig { @Value("${spring.redis.host}") private String hostName; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.password}") private String password; @Value("${spring.redis.database}") private int database; @Bean public JedisConnectionFactory connectionFactory() { JedisConnectionFactory connectionFactory = new JedisConnectionFactory(); connectionFactory.setPort(port); connectionFactory.setHostName(hostName); connectionFactory.setPassword(password); connectionFactory.setDatabase(database); System.out.println("获取到的hostName是:" + hostName + ",port :" + port); return connectionFactory; } /** * 解决redis集群环境没有开启Keyspace notifications导致的 * <p> * Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in class path resource */ @Bean public static ConfigureRedisAction configureRedisAction() { return ConfigureRedisAction.NO_OP; } }
清除后需要重新登录。
登录成功,redis上已经缓存了session,重启idea不用登录。