资讯专栏INFORMATION COLUMN

SpringBoot+Redis+Nginx实现负载均衡以及Session缓存共享

charles_paul / 1244人阅读

摘要:并没有因为不一致而不同使用连接,确实存储了一个,如下工程目录实际操纵过程中遇到一个问题启动工程的时候报错解决方法对于依赖,增加了一个,且版本为。启动,未报错,问题解决。后续有时间再研究。

1.环境信息
nginx-1.11.10
redis-latest包(redis windows版本)
springboot1.5.1.RELEASE

2.新建一个SpringBoot项目,参考如下链接:https://segmentfault.com/a/11...

3.nginx和redis解压缩即可,并正常启动

4.springboot集成Redis以及springboot,需要在POM文件中增加依赖

    
    
    4.0.0

    com.example
    demo3
    0.0.1-SNAPSHOT
    jar

    demo
    Demo project for Spring Boot

    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.1.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter
        
        
             org.springframework
             spring-context-support
             4.3.5.RELEASE
        
          
            org.springframework.boot  
            spring-boot-starter-web  
            
          
            org.springframework.session  
            spring-session-data-redis  
          
          
          org.springframework.boot  
          spring-boot-starter-redis
          1.3.8.RELEASE  
          
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
      
        org.springframework.data
        spring-data-redis
     
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


    

5.新建Controller类DemoController.java

@Controller
public class DemoController {
    @Autowired  
    DemoService demoService;  
     
    @RequestMapping("testcache")
    @ResponseBody
    public String testCache(@RequestParam String key){
        String s = demoService.testCache(key);
        return s;
    }
    
    @RequestMapping("/getseansession")
    @ResponseBody
    public Map getSession(HttpServletRequest request){
        Map attributeMap = new HashMap();
        request.getSession().setAttribute("message", request.getRequestURI());
        attributeMap.put("message", request.getRequestURI());
        System.out.println("sessionID:" + request.getSession().getId());
        return attributeMap;
    }
}

6.新建Service类DemoService.java

@Service
public class DemoService {
    @Cacheable(value = "keycache")
    public String testCache(String key){
        System.out.println("testCache:" + key);
        return key;
    }
}

7.新建RedisConfig类增加@EnableRedisHttpSession注解

@Configuration  
@EnableCaching
@EnableRedisHttpSession
public class RedisConfig{
}

8.application.properties文件配置,其中为了测试ngnix负载均衡功能,本工程配置为8080端口,另一个springboot工程可以配置为别的端口,比如8088,以便启动两个Server

#redis spring.redis.password=xxx
#spring.redis.database= # database name  
spring.redis.hostname=127.0.0.1 # server host
spring.redis.port=6379  
spring.redis.pool.maxActive=8  
spring.redis.pool.maxWait=-1  
spring.redis.pool.maxIdle=8  
spring.redis.pool.minIdle=0  
spring.redis.timeout=0

#tomcat port configuration
server.port=8080

可以看到启动了两个Server,DemoApplication和DemoApplication(1)

9.ngnix.conf配置文件中配置负载均衡策略

upstream test {
        server localhost:8080;
        server localhost:8088;
    }
    
    server {
        listen       80;
        server_name  localhost;
        client_max_body_size 1024M;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #location / {
        #    root   html;
        #    index  index.html index.htm;
        #}

        location / {
            proxy_pass http://test/getseansession;
            proxy_set_header Host $host:$server_port;
        }

10.访问http://localhost,会发现http请求交替访问后端两个server。且sessionID是一样的“sessionID:ad0cbb3b-d24d-4d61-87ac-b9ddcfeccaa4”。并没有因为server不一致而sessionID不同


使用RedisClient连接Redis Server,确实存储了一个sessionID,如下:

11.maven工程目录

12.实际操纵过程中遇到一个问题:启动springboot工程的时候报错“java.lang.IllegalStateException: Cannot load configuration class: org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration”

解决方法:对于spring-context-support依赖,增加了一个version,且版本为4.3.5.RELEASE。启动,未报错,问题解决。没配version的时候,默认是4.3.6.RELEASE,奇怪。后续有时间再研究。

        
             org.springframework
             spring-context-support
             4.3.5.RELEASE
        

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66727.html

相关文章

  • SpringBoot+Redis+Nginx实现负载均衡以及Session缓存共享

    摘要:并没有因为不一致而不同使用连接,确实存储了一个,如下工程目录实际操纵过程中遇到一个问题启动工程的时候报错解决方法对于依赖,增加了一个,且版本为。启动,未报错,问题解决。后续有时间再研究。 1.环境信息nginx-1.11.10redis-latest包(redis windows版本)springboot1.5.1.RELEASE 2.新建一个SpringBoot项目,参考如下链接:h...

    xuxueli 评论0 收藏0
  • 两年了,我写了这些干货!

    摘要:开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章系列处理登录请求前后端分离一使用完美处理权限问题前后端分离二使用完美处理权限问题前后端分离三中密码加盐与中异常统一处理 开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章! Spring Boo...

    huayeluoliuhen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<