VIP免费

springboot+redis实现session共享

springbootredissession 原创
57
DEMO程序园
程序猿 2021-07-31
积分:0

简介:

引入依赖<!--引入Redis--> <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-data-redis</artifactId> </dependency&

引入依赖

 <!-- 引入Redis -->
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- session 共享 -->
<dependency>
   <groupId>org.springframework.session</groupId>
   <artifactId>spring-session-data-redis</artifactId>
</dependency>

新增redis配置类

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
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.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

@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;
   }

}

新增redis配置

spring:  
 session:
   store-type: redis
 redis:
   database: 3
   ## 服务器地址
   host: 127.0.0.1
   ## Redis服务器连接端口
   port: 6379
   ## 连接超时时间(毫秒)
   #timeout: 3
   ## Redis服务器连接密码(默认为空)
   password: 123456
   ## 连接池中的最大连接数
   poolMaxTotal: 20
   ## 连接池中的最大空闲连接
   poolMaxIdle: 10
   ## 连接池最大阻塞等待时间(使用负值表示没有限制)
   poolMaxWait: 3
   timeout: 1000  #链接超时时间

启动类开启redis-session


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.session.data.redis.config.ConfigureRedisAction;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@SpringBootApplication
// 开启RedisHttpSession
@EnableRedisHttpSession
public class EasyBootAdminApplication {

   public static void main(String[] args) {
       SpringApplication.run(EasyBootAdminApplication.class, args);
   }

   /**
    *  解决redis集群环境没有开启Keyspace notifications导致的
    *
    *  Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in class path resource
    *
    * */
   @Bean
   public static ConfigureRedisAction configureRedisAction() {
       return ConfigureRedisAction.NO_OP;
   }
}



评论
最新发布
2024-05-19
2024-05-19
2024-05-19
2024-05-19
2024-05-19
2024-05-19
2024-05-19
2024-05-19
2024-05-19
2024-05-18
layui

微信扫码关注DEMO程序园公众号

本周热门
1989
1630
1387
1337
1279
1060
1041
995
868
516
热门下载
27
20
19
14
14
12
12
12
12
11