• SpringBoot SpringSession redis SESSION


    号称无缝整合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
  • 相关阅读:
    java.lang.IllegalArgumentException: node to traverse cannot be null!
    c3p0连接池的使用
    eclipse插件
    eclipse字体颜色设置
    oracle增删改查
    resultMap / resultType
    oracle 序列 ,check约束
    JSP:一种服务器端动态页面技术的组件规范。
    js
    字体
  • 原文地址:https://www.cnblogs.com/jtlgb/p/9951340.html
Copyright © 2020-2023  润新知