號稱無縫整合httpsession 共享,
但注意如果存在第三方框架,例如SESSION並發控制,這個是需要自己重寫session名單的.
關於redis session 共享 的session並發控制重寫,請看我另一篇 http://www.cnblogs.com/sweetchildomine/p/7007242.html
POM
<!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>1.5.4.RELEASE</version> </dependency> <!-- redis session --> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>1.3.1.RELEASE</version> </dependency>
RedisSessionConfig
/** * Created by ZhenWeiLai on 2017/6/11. */ @Configuration //maxInactiveIntervalInSeconds session超時時間,單位秒 @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 600) public class RedisSessionConfig { }
RedisCacheConfig
package com.lzw.core.configuration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * Created by ZhenWeiLai on 2017/6/11. */ @Configuration @EnableCaching public class RedisCacheConfig extends CachingConfigurerSupport { Logger logger = LoggerFactory.getLogger(RedisCacheConfig.class); @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.timeout}") private int timeout; @Value("${spring.redis.pool.max-idle}") private int maxIdle; @Value("${spring.redis.pool.max-wait}") private long maxWaitMillis; @Value("${spring.redis.password}") private String password; @Bean public JedisPool redisPoolFactory() { logger.info("JedisPool注入成功!!"); JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(maxIdle); jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password); return jedisPool; } @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) { RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>(); redisTemplate.setConnectionFactory(cf); return redisTemplate; } @Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); //默認超時時間,單位秒 cacheManager.setDefaultExpiration(3000); //根據緩存名稱設置超時時間,0為不超時 Map<String,Long> expires = new ConcurrentHashMap<>(); cacheManager.setExpires(expires); return cacheManager; } }
application.yml
spring: datasource: # readSize: 1 # name: writeDataSource type: com.alibaba.druid.pool.DruidDataSource write: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/cloud?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=true username: root password: 123 initialSize: 10 maxActive: 100 maxWait: 60000 minIdle: 5 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 #redis配置 redis: host: 192.168.1.11 port: 6379 # REDIS (RedisProperties) # Redis數據庫索引(默認為0) database: 0 # Redis服務器連接密碼(默認為空) password: # 連接池最大連接數(使用負值表示沒有限制) # 連接超時時間(毫秒) timeout: 0 pool: max-active: 8 # 連接池最大阻塞等待時間(使用負值表示沒有限制) max-wait: -1 # 連接池中的最大空閑連接 max-idle: 8 # 連接池中的最小空閑連接 min-idle: 0