日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

分布式session的問(wèn)題(使用SpringSession和redis解決)

作者:@黑夜中的一盞明燈 更新時(shí)間: 2022-07-30 編程語(yǔ)言
之前的代碼在我們之后一臺(tái)應(yīng)用系統(tǒng),所有操作都在一臺(tái)Tomcat上,沒(méi)有什么問(wèn)題。當(dāng)我們部署多臺(tái)系統(tǒng),配合Nginx的時(shí)候會(huì)出現(xiàn)用戶登錄的問(wèn)題

原因
由于 Nginx 使用默認(rèn)負(fù)載均衡策略(輪詢),請(qǐng)求將會(huì)按照時(shí)間順序逐一分發(fā)到后端應(yīng)用上。
也就是說(shuō)剛開始我們?cè)?Tomcat1 登錄之后,用戶信息放在 Tomcat1 的 Session 里。過(guò)了一會(huì),請(qǐng)求又被 Nginx 分發(fā)到了 Tomcat2 上,這時(shí) Tomcat2 上 Session 里還沒(méi)有用戶信息,于是又要登錄。
在這里插入圖片描述

一:使用SpringSession去實(shí)現(xiàn)

1.導(dǎo)入依賴,進(jìn)行配置,就可以在redis數(shù)據(jù)庫(kù)中看到所儲(chǔ)存的session
pom.xml


 <!-- spring-session 依賴 -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
            <version>2.3.3.RELEASE</version>
        </dependency>

application,yml

spring:
  # redis配置
  redis:
    #服務(wù)器地址
    host: 127.0.0.1
    #端口
    port: 6379
    #數(shù)據(jù)庫(kù)
    database: 0
    #超時(shí)時(shí)間
    timeout: 10000ms
    lettuce:
      pool:
        #最大連接數(shù),默認(rèn)8
        max-active: 8
        #最大連接阻塞等待時(shí)間,默認(rèn)-1
        max-wait: 10000ms
        #最大空閑連接,默認(rèn)8
        max-idle: 200
        #最小空閑連接,默認(rèn)0
        min-idle: 5

二:redis存儲(chǔ)信息

1.redis序列化

/**
 * redis配置類
 */
@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        //key序列化
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        // value序列化
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        // hash序列化 
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        // hash序列化 value序列化
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        //注入連接工廠
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }

}

2.修改業(yè)務(wù)層代碼
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
詳細(xì)代碼請(qǐng)看:代碼

原文鏈接:https://blog.csdn.net/qq_51269815/article/details/124937980

欄目分類
最近更新