session一致性-将session存储到redis中

分布式项目通常部署在不同的服务器中,而传统session只存储在本地服务器,并不能实现session的跨域使用。因此实现session一致性通常将sessio存储到redis中,其他服务器获取回话信息直接去redis中获取。spring-session原理就是讲获取session的方式,从tomcate容器获取改为了从redis中获取。

现在spring-session整合redis:

pom.xml:在spring+springmvc基础上:


  4.0.0
  cn.todd.spring
  webmvc
  0.0.1-SNAPSHOT

   
	
	    org.springframework
	    spring-context
	    5.0.0.RELEASE
	
	
	
	    org.springframework
	    spring-web
	    5.0.0.RELEASE
	
	
	
	    org.springframework
	    spring-webmvc
	    5.0.0.RELEASE
	

	
	
	    javax.servlet
	    javax.servlet-api
	    4.0.0
	    provided
	
	
	
	    javax.servlet
	    jstl
	    1.2
	
	
		
	
	    redis.clients
	    jedis
	    2.9.0
	
	
	
	    org.springframework.session
	    spring-session-data-redis
	    1.3.1.RELEASE
	


	
	
	    junit
	    junit
	    4.12
	    test
	
	
	
	    ch.qos.logback
	    logback-core
	    1.2.3
	
	
	    ch.qos.logback
	    logback-classic
	    1.2.3
	    test
	
  
  
  
		
			
			
				org.apache.maven.plugins
				maven-compiler-plugin
				
					1.8
					1.8
					UTF-8
				
			
		
	

在srpingmvc.xml:添加


	
		
		
		
		
	 
   
  		
  		
  		
  			
  		
   
   
   
   
   		
   
   

web.xml:配置


  
  	springSessionRepositoryFilter
  	org.springframework.web.filter.DelegatingFilterProxy
  
  
  	springSessionRepositoryFilter
  	/*
  
  
  
  
  
  	dispather
  	org.springframework.web.servlet.DispatcherServlet
 	  
         contextConfigLocation  
         classpath:springmvc1.xml  
       
    1  
  
  
  	dispather
  	/
   


基本完成,测试是不是将session信息存到redis了:

@Controller
public class ItemsController3 {
	@RequestMapping("/query")
	public  ModelAndView query(HttpServletRequest request){
		request.getSession().setAttribute("name", "zhangsan");
		ModelAndView mv=new ModelAndView();
		mv.setViewName("item");
		return mv;
	}

}

结果:



我运行了3次,这样回话就保存到redis了。取的时候也是直接从redis中取的。




简单原理:

session一致性-将session存储到redis中_第1张图片

session一致性-将session存储到redis中_第2张图片session一致性-将session存储到redis中_第3张图片

你可能感兴趣的:(spring,redis)