redis实现tomcat7集群的session共享

准备环境:centos6安装redis  --> see

Redis

       Redis 是一个高性能的key-value数据库,响应速度非常快,所以我们经常把一些业务处理中需要使用到的常用数据保持到redis中,把redis当做一个数据缓存库使用。

为什么要session共享

  服务器集群部署,作为一个软件开发人员,大家都很清楚,也知道为什么要做服务器集群部署。但是大家在进行集群部署的时候,需要保证每台服务器的session是一致的,就是要session共享。如果出现了session不共享,那么就表示整个服务器集群部署失败。

实现session共享的手段有很多种下面我介绍下我所了解能达到session共享效果的4种方式:

1:用户绑定session。用户访问服务器时,第一次访问的是哪台服务器,就把用户绑定到哪台服务器,以后用户后面的请求访问时,Ngnix把它的请求全部分发到该服务器。缺点:如果该服务器挂掉了,则只能访问该服务器的用户也就挂了。

2:服务器session复制。就是每次session创建/修改时,把它广播发给所有服务器,让所有服务器的session都是一样的。缺点:如果session缓存的数据过于庞大,广播session的时间就会变长,用户在发送请求的频率频繁的情况下,则会出现session漏数据的问题。

3:session共享,也就是缓存session。通过中间件把session缓存起来,如redis。redis缓存session有2个种情况:

a:服务器缓存session。在tomcat服务器配置好redis去缓存session,这样redis只和服务器有关系,也就是说开发时,随便你使用什么语言,什么框架,什么方式开发都能使用。缺点:服务器与redis之间的需要配置好,因为redis的版本比较多,版本间的变化有点大,要选择与服务器相匹配的版本需要花费一定的时间。

b:框架缓存session。spring4.x框架+redis就可以很好的达到这个效果。缺点:它固定软件开发语言和框架技术,只能是java语言,用spring框架(建议用4.0版本及以上)和redis来开发。

4:session持久化。就是把session当做一条记录保持到数据库中,每次请求时都需要去数据库中获取该session。缺点:增加了数据库压力,因为用户每次请求时都要访问数据库,使数据库访问的并发数就比较庞大,特别是那种大用户数的系统时,尤为突出。

  综合上述几种情况,我个人比较喜欢选择第3种(session共享),简单清晰。下面我就向大家分享下在我的具体项目使用到的session共享(服务器缓存session)。

 

Tomcat7+Redis的session共享 --> see

你可能感兴趣的:(Redis,Java)