关闭

不同版本的Spring与Redis集群配置

标签: redissessionspring集群
1960人阅读 评论(0) 收藏 举报

在之前的工作中配置过Redis集群用来共享session。但是仅仅用一个集群来共享session又有点浪费,于是在之前配置基础上再增加一些PV、UV的统计功能。但是这之中遇到了一个问题,就是关于redis配置和spring开发包版本的冲突问题。有两套方案,记录下来希望对将来的工作有帮助。

方案一:我所使用的spring的版本是4.2.5.RELEASE(其中一定要使用4.0.0及以上版本的spring-web和spring-webmvc开发包)

applicationContext.xml配置如下


	

	
        
        
        
        
        
        
         
     
    
    spring-session专用
    
    
        
      
    
	
	   
			
				
			
	   
	   
	       
	                              
	                
	                               
	            
	       
	   
	
	
	
        
        
    

    
        
        
         
        
             
            	
	             
	                
	                
	                
	            
            
        
     
       
     
         
         
        
         
         
         
        
    
使用的时候注入即可
    @Autowired
    @Qualifier("jedisConnectionFactory")
    private JedisConnectionFactory jedisConnectionFactory;
jedisConnectionFactory bean下面有获取Jedis实例的方法,然后Jedis里面实现了各种对redis集群操作的具体方法

但是这种方法有一个问题,就是在spring低于4版本的时候,编译会抛出异常,创建bean with name redisSentinelConfiguration失败,因为找不到sentinels对应的setter方法。如果项目spring版本无法升级的话,只能另找办法,看到一个帖子,地址是 http://www.cnblogs.com/zr520/p/5062025.html,这种办法可以在公司项目(spring 3.2.4)下面实现,因为这种办法我们在使用redis连接时,直接使用redis的共享连接池。而前者方法是通过sentinel寻找当前的master(配置是master唯一可写,slave只读),所以sentinel配置bean注入很重要。

至于pv uv统计需求,我统计pv用了一个filter,过滤所有web请求,所有请求都算到pv里面,uv我是按照sessionId统计的(因为request.getCookies()返回的cookie数组里面我也不知道算哪个。。菜鸟是我),但是关于uv,我看网上有两种说话,一种是按照ip计算,一种是cookie计算,我觉得都不太合理,比如有的网络使用代理访问,那么共用一个ip,至于cookie,如果不设置生命时长,浏览器重启cookie消亡,再次访问就会导致uv过多统计。因为uv是unique visitor,如果可一,会不会用MAC地址会好一些。。。求教。。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4925次
    • 积分:105
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条