redis Session会话共享
redis会话共享:
会话(session /sei/shen):是当前动态网站开发过程中的一个必要功能,用于保留客户对网站的操作状态的记录,从而实现网站的登录、添加购物车等交互式功能

会话的存储方式:
1、本地硬盘存储
2、数据库存储

为什么会需要会话:
http协议自身是无状态协议,是不会记录对网站的操作状态,但后续因为动态网站的出现,为了能够给用户提供便利以及更好服务,从而使用会话的功能,让用户可以在刷新网站后,之前对网站的操作不被丢失

cookie:也是用于保存访问网站的状态信息,与session不同的是,cookie保存在客户端,session保存在服务端,并且session可以存放的内容比cookie要多的多,所以目前已经很少再单用cookie保存状态信息了,通常都是cookie和session联用,session不保存状态信息,cookie只是保存相应的session ID号,来实现状态信息的记录与调用

nginx-tomcat配合redis-session实现会话共享
 =nginx-tomcat配合redis-session实现会话共享==
 案例环境:
 nginx:192.168.40.14
 tomcat1:192.168.40.15
 tomcat2:192.168.40.16
 redis:192.168.40.17部署环境=
 ==安装nginx=
 yum -y install gcc gcc-c++ pcre-devel zlib-devel make
 systemctl stop firewalld
 setenforce 0
 tar -xf nginx-1.6.0.tar.gz -C /usr/src/
 useradd -M -s /sbin/nologin -r nginx
 cd /usr/src/nginx-1.6.0
 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/=====安装Tomcat=
 tar -xf jdk-8u60-linux-x64.tar.gz
 mv jdk1.8.0_60/ /usr/local/java
 echo “export JAVA_HOME=/usr/local/java” >> /etc/profile
 echo “export PATH=/usr/local/java/bin:$PATH” >> /etc/profile
 . /etc/profile
 echo $PATH
 java -version
 tar -xf apache-tomcat-8.5.41.tar.gz
 mv apache-tomcat-8.5.41 /usr/local/tomcat
 systemctl stop firewalld
 setenforce 0=安装redis
 yum -y install gcc gcc-c++
 tar -xf redis-4.0.9.tar.gz
 cd redis-4.0.9/
 make
 cd src/
 mkdir -p /usr/local/redis
 cp -p redis-server redis-cli redis-benchmark /usr/local/redis/
 cp /root/redis-4.0.9/redis.conf /usr/local/redis/
 cd /usr/local/redis/
 ln -s /usr/local/redis/redis-cli /usr/bin/redis
 systemctl stop firewalld
 setenforce 0==配置redis主配置文件=
 #将redis监听的网卡IP改成自身对外监听的网卡IP地址
 sed -i "/^bind 127.0.0.1(ifconfig ens32 | awk 'NR2 {print $2}’)/g" redis.conf
#关闭redis的保护模式,类似linux的安全机制,所以必须关闭
 sed -i ‘/protected-mode/s/yes/no/g’ redis.conf#开启redis后台守护进程模式,否则redis会在前台运行
 sed -i ‘/daemonize/s/no/yes/g’ redis.conf#设置redis密码
 sed -i ‘/requirepass/s/foobared/123123/g’ redis.conf#将redis密码那一行得注释去掉
 sed -i ‘/requirepass 123123/s/^#//g’ redis.conf#修改日志文件存放路径及名称
 sed -i ‘/logfile/s@""@"/var/log/redis.log"@g’ redis.conf#修改redis最大使用内存,需要小于主机内存或等于主机内存,可使用free -m查询主机内存
 sed -i ‘/maxmemory /s//500MB/g’ redis.conf
 sed -i ‘/maxmemory 500MB/s/^#//g’ redis.conf=主库生成redis启动脚本
 cat <>/etc/init.d/redis
 #!/bin/shchkconfig: 2345 80 90
description: Start and Stop redis
#PATH=/usr/local/bin:/sbin:/usr/bin:/bin
 REDISPORT=6379
 EXEC=/usr/local/redis/redis-server
 REDIS_CLI=/usr/local/redis/redis-cli
 PIDFILE=/var/run/redis_6379.pid
 CONF="/usr/local/redis/redis.conf"
 AUTH=“123123”
 LISTEN_IP=$(netstat -utpln |grep redis-server |awk ‘{print $4}’|awk -F’:’ ‘{print $1}’ |uniq)case “$1” in
 start)
 if [ -f $PIDFILE ]
 then
 echo “$PIDFILE exists, process is already running or crashed”
 else
 echo “Starting Redis server…”
 $EXEC $CONF
 fi
 if [ “$?”=“0” ]
 then
 echo “Redis is running…”
 fi
 ;;
 stop)
 if [ ! -f $PIDFILE ]
 then
 echo “$PIDFILE does not exist, process is not running”
 else
 PID=$(cat $PIDFILE)
 echo “Stopping …”
 $REDIS_CLI -h $LISTEN_IP -p $REDISPORT -a $AUTH SHUTDOWN
 while [ -x ${PIDFILE} ]
 do
 echo “Waiting for Redis to shutdown …”
 sleep 1
 done
 echo “Redis stopped”
 fi
 ;;
 restart|force-reload)
 ${0} stop
 ${0} start
 ;;
 *)
 echo “Usage: /etc/init.d/redis {start|stop|restart|force-reload}” >&2
 exit 1
 esac
 ENDchmod +x /etc/init.d/redis
启动redis配置nginx
 vim /usr/local/nginx/conf/nginx.conf#在http模块中增加upstream,注意增加到server之上
 upstream tomcat {
 server 192.168.40.15:8080 weight=1 max_fails=3 fail_timeout=10;
 server 192.168.40.16:8080 weight=1 max_fails=3 fail_timeout=10;
 }#在server模块中增加location匹配
 location ~ (.*).jsp {
 proxy_pass http://tomcat;
 }==增加tomcat测试页=
 #192.168.40.15
 vim /usr/local/tomcat/webapps/ROOT/1.jsp
 111#192.168.40.16
 vim /usr/local/tomcat/webapps/ROOT/1.jsp
 222=====验证能否实现nginx负载均衡
 /usr/local/tomcat/bin/startup.sh
 curl 192.168.40.14/1.jsp=====配置tomcat与redis连接软件
 #软件名称jedis.jar,可通过下载TomcatClusterRedisSessionManager获得
 unzip tomcat-cluster-redis-session-manager.zip
 cp tomcat-cluster-redis-session-manager/lib/* /usr/local/tomcat/lib/
 cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /usr/local/tomcat/conf/
 cd /usr/local/tomcat/conf/=====编辑redis-data-cache.properties=
 vim redis-data-cache.propertiesredis.hosts=192.168.40.17:6379 #指定redis主机IP及端口号
 redis.password=123123 #指定redis密码#其他参数含义,走默认即可
 //是否支持集群,默认的是关闭
 #- set true to enable redis cluster mode
 redis.cluster.enabled=false
 //连接redis的那个库
 #- redis database (default 0)
 #redis.database=0
 //连接超时时间
 #- redis connection timeout (default 2000)
 #redis.timeout=2000=====修改context.xml配置文件从而能够使用redis连接工具=
 vim context.xml#将以下参数增加到标签中
====修改web.xml文件中的会话保持时间=
 #默认文件中就有这个参数,我们只需单独修改时间即可,单位秒,可根据实际情况来修改会话保持时间

 60==重启tomcat=
 /usr/local/tomcat/bin/shutdown.sh
 /usr/local/tomcat/bin/startup.sh=====生成会话共享测试页=
 vim /usr/local/tomcat/webapps/ROOT/2.jsp#将以下内容粘贴进去
 <% //HttpSession session = request.getSession(true); System.out.println(session.getCreationTime()); out.println(" 

 SESSION ID:" + session.getId() + " 

"); out.println("Session created time is :" + session.getCreationTime() + " 

"); %> 
==最终测试


#浏览器访问192.168.40.11/2.jsp,看是否session ID号是否会发生改变,不变化则配置成功
#登录redis,用keys *查看数据库中是否有session ID号