您的位置:首页 > 数据库 > Redis

Springboot2.x以上使用SpringSession进行redis共享session

2020-05-20 15:47 411 查看

码上生花,ECharts 作品展示赛正式启动!>>>

<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.setMaxWaitMillis(15000);
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不用登录。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring jedis