第7章 Redis开发实战ppt课件(完整版).pptx

上传人:春哥&#****71; 文档编号:16924582 上传时间:2022-05-20 格式:PPTX 页数:65 大小:3.31MB
返回 下载 相关 举报
第7章 Redis开发实战ppt课件(完整版).pptx_第1页
第1页 / 共65页
第7章 Redis开发实战ppt课件(完整版).pptx_第2页
第2页 / 共65页
点击查看更多>>
资源描述

《第7章 Redis开发实战ppt课件(完整版).pptx》由会员分享,可在线阅读,更多相关《第7章 Redis开发实战ppt课件(完整版).pptx(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第7章 Redis开发实战ppt课件(完整版)Redis 6 开发与实战主讲教师:XXX大数据教材Redis 6开发与实战学院:XXX邮箱:XXX办公地点:XXX办公电话:XXX推荐教材Redis 6 开发与实战 作者:张云河、王硕出版:人民邮电出版社配套:PPT+实验指导特点:覆盖Redis 6版本的绝大部分核心特性,面向初学者的行文分格,加上大量的辅助图片等。第七章 RedisRedis开发与实战大数据教材Redis 6开发与实战主讲: XXX 主审: XXX第5章Redis的持久化第1章初始Redis 第2章Redis常用数据类型第3章Redis常用命令第4章Redis高级主题 第5章R

2、edis缓存的持久化第6章Redis集群环境部署第7章Redis开发与实战第8章Spring Boot与Redis整合应用第9章Redis监控第10章Redis的缓存设计与优化内容导航:第7章 Redis开发与实战主讲:* 主审: *搭建开发Redis的Java开发环境使用Java操作RedisRedis调用方式Redis集群与Java实例1: 使用Redis获得共同好友实例2:在Tomcat上使用Redis保存Session7搭建开发Redis的Java开发环境 在开始使用Java操作Redis前,需要确保读者的电脑上已经安装了Redis服务器,且能正常使用Redis。 本节讲解在最常见的P

3、C操作系统平台(Windows)上安装配置所需的Java开发环境。以及开发Java的利器Intellij IDEA。系统Windows1064位平台JDK1.8.0_102Tomcat9.0.2Maven3.6.0Redis开发安装环境信息8搭建开发Redis的Java开发环境在Windows环境下安装Java 8 Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。Java可运行于多个平台,如Windows, Mac OS,及其他多种UNIX版本的系统。 JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的Java应用程序。JDK是整个

4、java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。使用Java操作Redis,需要先按照以下步骤安装Java环境。9搭建开发Redis的Java开发环境1,下载JDK8 在Oracle官网,找到JDK8的安装包,点击“Accept License Agreement”,根据自己的操作系统下载对应的文件,如下图所示。本书的案例使用的操作系统为64位Windows 10,故下载 Windows x86对应的安装包jdk-8u151-windows-x64.exe。双击安装包进行安装,选择自定义安装JDK8,它的安装路径可以由读者自定义安装,笔者的安装路径放在了D:i

5、nstalled_softwarejdk1_8目录下。注意安装过程过着提示一步步操作就可以了,注意安装路径不要使用带有中文或空格的目录,避免在之后的使用过程中出现的一些莫名的错误。10搭建开发Redis的Java开发环境2,配置JDK81)鼠标右键单击“计算机”图标,选择“属性”。在“系统”窗体左侧点击“高级系统设置”,在“高级”选项卡里点击“环境变量”按钮,弹出“环境属性”窗口,如下图所示。在系统窗口修改环境变量2)新建名为JAVA_HOME的变量名,变量的值为之前安装到JDK路径位置, D:installed_softwarejdk1_8 。3)新建名为CLASS_PATH的变量名,变量名

6、可以设置为 ;.;%JAVA_HOME%/lib;4)在已有的系统变量 PATH的变量值上加上: ;.;%JAVFA_HOME%/bin;至此配置JDK8完成,如下图所示。11搭建开发Redis的Java开发环境下面检验是否配置JDK成功,输入快捷键” win + R”,在运行框中输入 cmd命令,在出现的对话框中输入“java -version”命令,如果出现下图的结果,则表明配置JDK成功了。查看JDK的版本12搭建开发Redis的Java开发环境安装Tomcat 9 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的

7、场合下被普遍使用,是开发和调试JSP 程序的首选。 读者可以根据自己的操纵系统去apache官网选择合适的版本下载,笔者下载的是windows64位版本的apache-tomcat-9.0.24.zip。解压放到指定目录就可以使用,无需安装。 Tomcat目录Tomcat关键目录及文件作用:关键目录及文件作用:l bin:用于存放各种平台下启动和关闭Tomcat的脚本文件。在该目录中有两个非常关键的文件startup.bat、shutdown.bat,前者是Windows下启动Tomcat的文件,后者是对应的关闭文件;l conf:Tomcat的各种配置文件,其中server.xml为服务器的

8、主配置文件,web.xml为所有Web应用的配置文件,tomcat-users.xml用于定义Tomcat的用户信息、配置用户的权限与安全。l lib:此目录存放Tomcat服务器和所有Web应用都能访问的JAR。l logs:用于存放Tomcat的日志文件,Tomcat的所有日志都存放在此目录中。l temp:临时文件夹,Tomcat运行时候如果有临时文件将保存于此目录。l webapps目录:目录:Web应用的发布目录,把Java Web站点或war文件放入这个目录下,就可以通过Tomcat服务器访问了。l work:Tomcat解析JSP生成的Servlet文件放在这个目录中。13搭建开

9、发Redis的Java开发环境 启动Tomcat服务器,在Tomcat的bin目录下找到startup.bat 双击运行。会弹出一个黑色窗口的控制台,黑色窗口的控制台不要关闭,如果关闭窗口就相当于把Tomcat服务器停止了。在Windows下启动Tomcat 在浏览器地址栏中输入:http:/localhost:8080 或者 http:/127.0.0.1:8080 ,如果看到如下页面,证明Tomcat服务器启动成功了。Tomcat默认的访问端口是8080,如下图所示。访问Tomcat服务器14搭建开发Redis的Java开发环境搭建Intellij IDEA开发环境 俗话说:“工欲善其事,

10、必先利其器”,那么在做Java开发之前,一个好的IDE会使编程效率得到大幅度提高。Intllij IDEA是目前最流行的Java开发环境之一,本节主要介绍Intllij IDEA开发工具的安装和配置。Intllij IDEA不但可以开发Java应用,还可以作为Java源代码的阅读器。15搭建开发Redis的Java开发环境搭建Intellij IDEA开发环境1, 安装Intllij IDEA IDEA 全称IntelliJ IDEA,是用于java语言开发的集成环境(也可用于其他语言),IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE

11、支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。 IDEA官网上对于不同的操作系统(windows,macOS,Linux)都有两个版本可供下载。Ultimate即为旗舰版,功能全面,插件丰富,但是按年收费,类似于MyEclipse。 Community即为社区版,免费试用,功能相对而言不是很丰富,但是不影响开发使用,类似于Eclipse。本书选用Intellij IDEA社区版作为JAVA开发工具,Intllij IDEA社区版的安装很简单,按照提示一步步在WIndows上就可以安装成功。16使用Java操作Redis使用Java操作Redis连

12、接Redis的两种方式使用IDEA新建Maven项目,使用官方推荐的Java版客户端是Jedis,支持命令,事务、管道。我们对Redis数据的操作,都可以通过客户端Jedis来完成。本案例文件名为”RedisChapter07JedisDemo1”使用IDEA建立Java Maven项目,在Maven项目中引入pom.xml依赖。导入的pom.xml文件实际引入了如下jar包。17使用Java操作Redis1,Jedis直连Jedis直连相当于一个TCP连接,数据传输完成后关闭连接。本案例使用” RedisDemo.java”,内容如下。该程序的输出为:打开一个终端,并使用redis-cli命

13、令连接到Redis服务器。可以看到数据已经保存到Redis服务器上了。18使用Java操作Redis2,Jedis Pool连接池连接 使用Jedis线程池可以不需要创建新的Jedis对象连接Redis服务器,可以大大减少对于创建和回收Redis连接的开销。 以下是对使用Jedis线程池和使用Jedis直连两方案的对比:优点缺点Jedis直连简单方便的创建Jedis对象适用于连接数比较少且使用时间较长,可以构成长连接的场景存在每次新建和关闭TCP的开销每次都去创建Jedis对象,系统资源肯能无法再有效范围内进行控制,会存在连接容易发生泄漏问题。Jedis对象本身是线程不安全的Jedis连接池J

14、edis是预先生成的,不需要随用随创建,随用完随关闭,降低了这些开销。连接池这种形式能够更好的保护和控制资源使用,有固定的参数去控制最大连接数或者空闲数目等。相对于直连来说,使用起来更麻烦,特别是资源管理上需要多个参数来保证,一旦出现规划不合理的情况就会出现问题,比如连接池满了,大量连接空闲,连接超时等情况。19使用Java操作Redis本案例使用“JedisPoolDemo.java”,内容如下。该程序输出为:20使用Java操作Redis操作String本节使用Jedis操作String字符串。本案例使用“RedisDemo2.java”,内容如下该程序输出为:21使用Java操作Redi

15、s操作Map本节使用Jedis操作Map对象,本案例使用“RedisDemo2.java”内,内容如下该程序输出为:22使用Java操作Redis操作List本节使用Jedis操作List对象,本案例使用“RedisDemo2.java”内,内容如下。该程序输出为:23使用Java操作Redis操作Set本节使用Jedis操作Set对象,本案例使用“RedisDemo2.java”内,内容如下该程序输出为:24使用Java操作Redis排序本节使用Jedis对数据进行排序,本案例使用“RedisDemo2.java”内,内容如下。该程序输出为:25使用Java操作RedisRedis存储图片

16、本节使用Redis来存储一张图片,首先从网络获取下载一张图片,然后使用base64算法编码,再使用base64算法解码,存储到本地E盘根目录下。 在百度图片搜索熊猫,从搜索结果中访问熊猫的网页可以看到一只可爱的小熊猫图片,我们要把这张图片使用Java程序保存在Redis中。网络上的一张图片26使用Java操作Redis1,base64图片编解码本案例使用“Base64ImageUtils.java”,程序代码如下:27使用Java操作Redis28使用Java操作Redis在控制台查看图片使用base64算法编码后的输出结果。ase64编码后的图片信息29使用Java操作Redis本程序将网络

17、上的熊猫图片保存到本地E:盘下的pandas1.jpg文件,查看下载的图片和网络上的图片是一样的,如下图所示。 图片转化成String字符串 (1)我们可以在Redis存储图片的base64编码或者解码,以K-V格式,K为普通字符串,V为图片的base64编码,get(K)后再base64解码就可以了; (2)我们也可以在Redis中存储图片的网络url或者本地的path路径,具体实现可以使图片本身存储到磁盘中,然后在Redis中以图片的网络url或者本地的path路径为value(V)值存储。30使用Java操作Redis直接在Redis中存储图片对象,使用Java的序列化/反序列化机制进行

18、处理实现。本案例使用“ImageRedisTest.java”,内容如下。2, 图片转化成object对象31使用Java操作Redis直接在Redis中存储图片对象,使用Java的序列化/反序列化机制进行处理实现。本案例使用“ImageRedisTest.java”,内容如下。2, 图片转化成object对象运行代码,使用redis-cli连接Redis服务器,可以看到在数据库里已经存在键”image:e:/pandas.jpg”了,访问这个键入下图所示。Redis存储图片32使用Java操作RedisRedis存储Object对象Redis存储对象数据的时候,要进行对象的序列化与反序列化操

19、作。本案例使用“Person.java”,保存用户数据,内容如下。33使用Java操作RedisRedis存储Object对象创建序列化工具,本案例使用“SerializeUtil.java”,内容如下。34使用Java操作RedisRedis存储Object对象使用Redis存储Object对象,本案例使用“PersonRedisTest.java”,内容如下。运行程序,该程序输出为:查看Redis存储的数据:35使用Java操作RedisRedis存储Object对象使用Redis存储Object对象,本案例使用“PersonRedisTest.java”,内容如下。运行程序,该程序输出为

20、:查看Redis存储的数据:36使用Java操作RedisRedis存储和计算用户的访问量 有这样一个场景,用户访问系统的页面,我们需要统计在2020年8月6日下午22点到23点之间某个页面的访客数(Unique Visitor, UV),指的是某个用户不管访问这个页面几次都算作访问页面一次,是不重复计数的。所以key设置为page:access:2020080622,这种场景下适合使用HyperLogLog来存储和计算用户的访问量,HyperLogLog使用统计概率上的算法,牺牲数据的精准性来节省内存的占用空间。本案例使用“RedisPFCountTest.java”,内容如下。运行程序,该

21、程序输出为: 从返回结果可以看出,对于100万用户使用HyperLogLog存储数据,多出了3993条数据,存在一定的误差率。然后在通过rdb tools工具统计了user:login:2020080622这个key的信息,发现只占用14400 byte的硬盘空间,也就是14K。所以 HyperLogLog 适合在统计用户访问量日活月活此类对精确度要不不高的场景。37Redis调用方式本节介绍Redis的4种常用调用方式。本案例使用”RedisTransDemo.java”,本节内容使用的代码都保存在这个文件内。普通同步方式事务方式(Transactions)管道(Pipelining)管道中

22、调用事务38Redis调用方式普通同步方式事务方式(Transactions)普通同步方式是一种最简单和最基础的调用方式,对于简单的数据存取需求,可以通过这种方式调用。程序输出结果为:Redis事务可以一次执行多个命令,有两个特性:隔离性:事务的所有命令都会序列化,按顺序执行,事务执行完后才会执行其他客户端的命令。原子性:事务中的命令要么全部被执行,要么全部不执行。程序运行返回以下结果。39Redis调用方式管道(Pipelining)管道中调用事务管道是一种两个进程之间进行单向通信的机制。在Redis中有时候我们需要采用异步的方式,一次发送多个指令,并且不同步等待其返回结果。这样可以取得非常

23、好的执行效率。程序运行返回以下结果。有时候我们需要异步执行命令,但是又希望多个命令是有连续的,所以我们就采用管道加事务的调用方式。jedis是支持在管道中调用事务的。程序运行返回以下结果。40Redis集群与Java 本节使用jedis连接一个集群,一个集群环境由六个节点组成,每个节点有不同的端口,三个Master(主节点) ,三个Slaver(从节点)。Redis 的集群创建请参考本书 6.3.2 开始Redis 集群环境搭建。本案例使用”RedisClusterDemo.java”,内容如下。程序运行返回以下结果。使用redis-cli -c -h 192.168.11.15 -p 800

24、1连接上Redis 集群,可以看到数据已经已经成功插入了。41实例1: 使用Redis获得共同好友 可以使用Redis来存储社交关系,比如有这样一个需求,在微博中张三有一批好友,李四有另外一批好友,现在需要查询张三和李四的共同好友。为了实现这个需求,可以使用Redis的Set集合数据类型。Set 是 String 类型的无序集合,集合中的成员是唯一的,这表示集合中不能出现重复的数据。可以使用Redis的SINTER key 命令获得给定集合的交集。42实例1: 使用Redis获得共同好友初始化数据首先,使用redis-cli命令连接上Redis服务器,输入以下命令。43实例1: 使用Redis

25、获得共同好友使用jedis获得用户的共同好友然后通过使用jedis完成同样的操作,使用Redis获得zhangsan和lisi的共同好友。本案例使用”TestSNS.java”,内容如下。运行代码得到结果,和在Redis中的统计结果是一样的。44实例2: 在Tomcat上使用Redis保存Session 当用户量大和应用服务器使用集群来布署时,使用Tomcat默认自带的Session就不能满足需求了。当然解决方法有很多,本节提供了一个解决方案,就是使用Redis来保存Session,好处就是使用Session的代码没有任何变化,Tomcat默认把Session保存到Redis上面,把Redis

26、缓存作为一个Session的存储系统。我们先看下分布式Session的概念。45实例2: 在Tomcat上使用Redis保存Session分布式Session 单服务器Web应用中,Session信息只存在该服务器中,这是前几年的流行方式。但是近几年随着分布式系统的流行,单系统已经不能满足日益增长的百万级用户的需求,集群方式部署服务器已在很多公司运用起来,当高并发量的请求到达服务器端的时候通过负载均衡的方式发送到集群中的某个服务器,这样就可能导致同一个用户的多次请求被发送到集群的不同服务器上,就会出现取不到Session数据的情况,于是Session的共享就成了一个问题。 如左图所示,假设用户

27、包含登录信息的Session都记录在第一台web-server1上,反向代理如果将请求路由到另一台web-server2上,就找不到相关信息,从而导致用户需要重新登录。46实例2: 在Tomcat上使用Redis保存Session一, 分布式Session 针对分布式系统Session一致性的问题,可以采用Session复制(同步)来解决,持久化Session到Redis,这样每个web-server之间都包含全部的Session, Web Server可以支持web应用原有的功能,不需要修改代码。47实例2: 在Tomcat上使用Redis保存Session二, 持久化Tomcat Sess

28、ion到Redis HTTP是无状态协议,这意味着每次客户端访问网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息。 Session表示客户端与服务器的一次会话,从客户端打开浏览器并连接到服务器开始,到客户端关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器,可能会在服务器的几个页面之间切换,服务器可以通过Session会话来保存客户的个人信息,如果用户关闭了浏览器那么Session就会丢失,改进方法是把Redis作为Tomcat服务器的缓存,保存Session会话。 实验环境基于CentOS7, 实验环境需要的Nginx,Tomcat和JDK

29、请参考下节的内容。在在Tomcat上使用上使用Redis作为缓存服务器的实验环境作为缓存服务器的实验环境名称IP地址端口版本系统Nginx192.168.11.1480Nginx1.17.4 CentOS7Tomcat-1192.168.11.148080Tomcat7Tomcat-2192.168.11.158080Tomcat7Redis192.168.11.146379Redis 6.0.6JDK192.168.11.14 JDK 13JDK192.168.11.15 JDK 1348实例2: 在Tomcat上使用Redis保存Session 这里搭建一个有两台Tomcat服务器的小集群

30、。在这个图中,Nginx做为反向代理,实现静动分离,将客户动态请求根据权重随机分配给两台Tomcat服务器,Redis做为两台Tomcat的共享Session数据服务器。为了保证网络的连通性,把两台Linux主机的防火墙全部关闭,请参考本书11.1.1 关闭防火墙小节。 Redis在IP地址为192.168.11.14的Linux服务器上的安装请参考本书1.2.2 在Linux下安装Redis。Redis作为缓存服务器的实验拓扑图作为缓存服务器的实验拓扑图二, 持久化Tomcat Session到Redis49实例2: 在Tomcat上使用Redis保存Session安装服务器 Tomcat和

31、反向代理服务器Nginx一,安装服务器Tomcat首先在2台机器上安装JDK 13,并设置环境变量。具体操作如下。1, 在Linux上安装Java1) 下载JDK 13在Oracle官网下载JDK,在下载页面中需要选择接受许可,并根据自己的系统选择对应的版本,本节以 CentOS7 64位系统为例,下载LInux版本的Java压缩包jdk-13_linux-x64_bin.tar.gz。50实例2: 在Tomcat上使用Redis保存Session在/usr/local目录下创建java目录。把jdk-8u201-linux-x64.tar.gz上传到CentOS服务器。手动解压缩JDK9的压

32、缩包 jdk-13_linux-x64_bin.tar.gz,然后设置环境变量。复制解压缩的jdk-13 到 /usr/local/java 目录下2)设置环境变量在profile中添加如下内容:让修改的 /etc/profile配置文件生效。3) 验证JDK有效性51实例2: 在Tomcat上使用Redis保存Session2, 安装Tomcat7 在apache官网下载Tomcat7的Linux版本压缩包apache-tomcat-7.0.96.tar.gz,如下图所示。然后解压缩 Tomcat 7的压缩包并授予执行权限。启动Tomcat 7,进入到解压缩后的 Tomcat 7目录。访问

33、http:/127.0.0.1:8080 ,如果看到以下页面就说明启动Tomcat服务器成功了。停止Tomcat服务器可以使用命令52实例2: 在Tomcat上使用Redis保存Session三,安装服务器 Tomcat和反向代理服务器Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。在Nginx官网下载最新的Nginx的Linux版本安装软件nginx-1.17.4.tar.gz。 要做到负载均衡,需要使用代理服务器将接收的请求均衡的分发到各服务器中。这里的代理服务器就是Nginx,分发请求的服务器使用的

34、是Tomcat。53实例2: 在Tomcat上使用Redis保存Session然后在主机(192.168.11.14)上安装Nginx。具体步骤如下:1)解压缩 Nginx压缩包在安装nginx之前先检查一下是否已安装nginx的一些模块依赖的lib库,诸如g+、gcc、pcre-devel、openssl-devel和zlib-devel。2)编译Nginx源码 把Nginx安装到 “/usr/local/nginx”目录下。编译Nginx安装Nginx安装Nginx成功后,访问/usr/local/nginx目录,如下图所示。查看查看Nginx的安装目录的安装目录54实例2: 在Tomca

35、t上使用Redis保存Session安装Nginx后,查看Nginx版本。3)启动Nginx。 然后在浏览器中访问 http:/127.0.0.1 查看Nginx是否启动成功。Nginx默认占用的端口是80端口,而http默认使用的端口也是80, 所以访问http:/127.0.0.1:80和http:/127.0.0.1的访问效果是一样的。如果看到以上画面说明Nginx 启动成功了4) 配置Nginx关闭NginxNginx命令附带的参数 -s 表示强制停止Nginx服务。测试Nginx配置文件是否正确重启Nginx,修改配置后,使用以下命令重新加载,使配置文件生效55实例2: 在Tomca

36、t上使用Redis保存Session5)启用Nginx状态信息(status) Nginx可以通过with-http_stub_status_module模块来监控Nginx的一些状态信息,此模块在编译Nginx的时候默认是不编译的,从源码编译安装Nginx时,需要在编译的时候加上对应的模块-with-http_stub_status_module,然后在编译安装Nginx。然后使用nginx -V命令来查看是否有with-http_stub_status_module模块。然后修改nginx的配置文件nginx.conf的内容。添加以下内容到server节点里,然后保存文件,退出到命令行。5

37、6实例2: 在Tomcat上使用Redis保存Session修改配置后,使用以下命令重新加载Nginx的配置文件,使配置文件生效重启Nginx后,在浏览器输入http:/127.0.0.1/nginx-status 就会出现Nginx状态统计结果页面,如下图所示。页面中参数含义如下:Active connections: 表示Nginx的当前的活跃连接数。server: 表示Nginx已接受的连接数。accepts : 表示Nginx已处理的连接数。handled requests :表示Nginx已处理的请求数。Reading: 表示Nginx 读取到客户端的 Header 信息数。Writ

38、ing: 表示Nginx 返回给客户端 Header 信息数。Waiting: 表示Nginx 已经处理完正在等候下一次请求指令的驻留链接(开启keep-alive设置的情况下,这个值等于Active connections - ( Reading + Writing ))。57实例2: 在Tomcat上使用Redis保存Session四,配置Tomcat集群1,部署web项目 Session是存在Server端,Cookie是存在用户浏览器本地或内存中,用户在发起一个HTTP请求时,在请 求 的 H e a d e r 中 会 有 C o o k i e 信 息 , 而 C o o k i

39、e 中 有 一 个 S e s s i o n I d 值 , 比 如“JSESSIONID=9DF15394CABFCABB7E360F89D42F2FB1”,通过这个值获取到服务器端对应的Session信息。如下图所示: 查看Cookie值 用户在给Session赋值的操作的时候我们可以为用户生成一个唯一的cookie值作为SessionID存储在用户的客户端,将该cookie值作为缓存的键和Session值一起存入到Redis缓存中。程序实现逻辑: 使用Intellij IDEA新建一个 “J2EE Web Project”项目,本案例文件名为”RedisChapter07 web1”,

40、如下图所示。58实例2: 在Tomcat上使用Redis保存Session四,配置Tomcat集群修改index.jsp文件,具体内容为。59实例2: 在Tomcat上使用Redis保存Session四,配置Tomcat集群 把web1项目部署到192.168.11.15的Tomcat的 %/tomcat7/webapps目录下,然后稍微修改下index.jsp文件上的内容以示区别,以便等下区分请求被分发到了哪个Tomcat上,修改index.jsp页面的内容如下。在两台主机的Tomcat上部署 web1项目,访问 http:/localhost/web1发现SessionId不一致。60实例

41、2: 在Tomcat上使用Redis保存Session四,配置Tomcat集群 把web1 项目部署到分别部署到两台主机的Tomcat上,把web1项目部署在 192.168.11.14主机的%/tomcat7/webapps/目录下。访问 http:/192.168.11.14:8080/web1 如下图所示。把web1项目部署在 192.168.11.15主机的%/tomcat9/webapps/目录下。访问 http:/192.168.11.15:8080/web1 如下图所示。查看页面中的sessionId查看另一个页面中的sessionId61实例2: 在Tomcat上使用Redis

42、保存Session四,配置Tomcat集群2,配置Nginx修改主机(192.168.11.14)上的Nginx的配置文件nginx.conf。修改Nginx的配置文件 /usr/local/nginx/conf/nginx.conf后,对nginx.conf文件内容进行精简,精简后的文件内容如下图所示。在nginx.conf里配置Nginx反向代理使用的主要指令如下所示。1) 使用upstram指令配置后端服务器组。2) 使用proxy_pass指令配置需要转发的路径地址。在本例中将web1应用部署在两台Tomcat服务器上,IP地址分别为192.168.11.14和192.168.11.1

43、5,反向代理服务器Nginx部署在IP地址为192.168.11.14的计算机上,proxy_pass的URL配置为 http:/tomcat,如果在IP为192.168.11.14的计算机上访问 ,Nginx服务器会把请求地址转向 http:/tomcat, tomcat是Nginx配置的服务器集群名称,Nginx会根据权重(weight)把请求分配给名称为tomcat的服务器集群上对应的http:/192.168.11.14:8080和http:/192.168.11.15:8080的Web应用上,权重越大,Web应用获得分配请求的概率越大。62实例2: 在Tomcat上使用Redis保存

44、Session四,配置Tomcat集群重新启动 Nginx 在192.168.11.14主机上访问 http:/localhost/web1页面,会发现一个问题:每次刷新页面都会得到不同的sessinoID值,如下图所示,我们还需要配置Tomcat使用Redis作为Session会话管理。刷新页面会得到不同的Session ID值63实例2: 在Tomcat上使用Redis保存Session五,配置Tomcat 使用Redis作为Session管理 首先,在两台机器修改conf/context.xml文件内容重新启动Tomcat。1,在两台主机的Tomcat 的conf/context.xml

45、 文件里增加如下内容,在实验环境中第一台测试服务器的IP为 : 192.168.11.14,也是Redis服务器所在主机的IP。参数说明:host:对外提供服务的主机。port: 对外提供服务的端口。 下载最新的Jedis模块(一个Redis 的Java客户端),Tomcat Redis Session Manager 模块和 Apache Commons Pool模块, 把三个模块的 jedis-3.1.0.jar , tomcat-redis-session-manager1.2.jar , commons-pool2-2.0.jar复制到 %/Tomcat7/lib目录下。64实例2:

46、在Tomcat上使用Redis保存Session五,配置Tomcat 使用Redis作为Session管理2, 修改Redis配置文件修改 redis.conf配置文件,修改bind项目对应的值为如下内容:然后重新启动Redis服务器客户端连接Redis在IP地址为192.168.11.14的Linux主机上再次访问 http:/localhost:8080/web1, 会发现 sessionID的会话值不变。访问分布式web应用,页面会使用同一个sessionId 可以看出,分别访问了不同的Tomcat,但是得到的SessionID却是相同的,说明达到了集群的目的,这样就实现了负载均衡。 假设服务器在运行过程中,其中一个Tomcat崩溃了,仍然还有另一个Tomcat可以访问服务。访问 Redis会发现多了一个key,说明在Tomcat上使用Redis保存了Session,如下图所示。 使用Redis查看session会话信息学 习 进 步 !作者:张云河、王硕大数据教材Redis 6开发与实战最新版

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁