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

在之前的工作中配置过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地址会好一些。。。求教。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值