Springboot+redis實現session共享

當多個應用作集羣的時候,如何實現應用之間session共享。redis

解決辦法:spring

用一個容器保存 session,就能共享了。容器能夠是數據庫,緩存,文件等。固然這裏性能最高的仍是 數據庫

redis了。緩存

實例代碼:服務器

pom文件中加入redis跟sessionsession

<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>

在配置文件application.properties裏配置app

# Redis服務器地址
spring.redis.host=localhost
# Redis服務器鏈接端口
spring.redis.port=6379
# Redis服務器鏈接密碼(默認爲空)
spring.redis.password=

加上端口號spring-boot

server.port=8080

定義一個Controller性能

@GetMapping("get")
public Map<String,String> getSession(HttpServletRequest request){
    HashMap<String,String>map=new HashMap<String, String>();
    map.put("sessionId",request.getSession().getId());
    return map;

}

啓動app類加上@EnableRedisHttpSession 開啓spring session支持server

@SpringBootApplication
@EnableRedisHttpSession
public class DemoApplication {

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

}

啓動第二個項目就是改項目的端口

首先訪問8080端口的設置session

最後,再訪問8081端口的sessions

可見,8080與8081兩個服務器返回結果同樣,實現了session的共享

這個時候打開redis客戶端,能夠查詢到session信息已經保存在redis裏。

相關文章
相關標籤/搜索