nginx+redis实现session共享-创新互联

上一篇我们介绍了nginx实现的负载均衡和动静分离,可看这边。

仲巴ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

我们在文章的末尾说到,负载均衡需要面临的一个问题是内存数据的同步。例如:我有A,B两台服务器做了负载均衡,当我在A服务器上执行了登录并且将登录数据存入session的时候,这些session数据只存在于A服务器上,而没有在B服务器上,假如在处理下一个请求的时候,我需要用到session的数据,而不巧的是,这个请求刚好被交由B服务器来处理,这时候就会出现B服务器拿不到session数据的情况,从而造成错误。

这是一个无法避免的问题,有若干的解决方案,归结起来都是要实现session等数据在各负载均衡分支中的同步,第一种想到的方案是把这些数据放在mysql等数据库,也就是说存在磁盘,但是我们都知道session之所以出现是因为它是在内存中的,程序读取内存的数据要远远比读取磁盘的数据快,所以我们把一些经常用到的东西都放在session里面。

有没有一种数据库,是存放在内存中的呢?这就是redis。通俗的讲,它就是一个数据库,但是这个数据库是存在与内存里面的,所以存取起来速度要比读取磁盘的数据快得多。又因为它是一个数据库,所以可以实现数据的同步。

我们把session数据存放在redis中,然后所有的集群分支都可以去访问这个数据库里面的东西,这就是全局缓存的原理。

1.第一步是安装redis,我的服务器是windows的,下载的是免安装版本,解压以后就可以了,其目录如下。一开始redis是默认不需要密码,如果想要设置密码,可以进入redis.windows.conf文件下找到requirepass,删除前面的#号,在其后面便可以设置密码。

nginx+redis实现session共享

2.从cmd进入redis的根目录,键入如下指令:redis-server.exeredis.windows.conf。这样就可以启动redis了,如果启动成功,则会出现下面画面。当然还可以修改conf文件,加上密码。requirepass xxxxx

nginx+redis实现session共享

3.接下来我们就可以做一些配置工作,来实现session数据的全局缓存。

1)首先是添加jar包,如果你是maven项目,需要在pom.xml加入下面代码


 
  org.springframework.session
  spring-session-data-redis
  1.3.1.RELEASE
  pom
 

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:nginx+redis实现session共享-创新互联
转载注明:http://myzitong.com/article/ccjedi.html