云上运维及应用实践教程(第2版) 课件 06. 基础架构之高速缓存_第1页
云上运维及应用实践教程(第2版) 课件 06. 基础架构之高速缓存_第2页
云上运维及应用实践教程(第2版) 课件 06. 基础架构之高速缓存_第3页
云上运维及应用实践教程(第2版) 课件 06. 基础架构之高速缓存_第4页
云上运维及应用实践教程(第2版) 课件 06. 基础架构之高速缓存_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

06基础架构之高速缓存云上运维及应用实践6.2知识点讲解任务学习6.1场景导入

目录CONTENTS6.1场景导入将“慕课云”系统部署在负载均衡SLB的集群环境下会出现这样的问题:在访问系统时明明已经登录系统,但在访问过程中总是会跳转到未登录的页面。1.提出问题6.1场景导入以上原因是由于用户登录的会话信息丢失导致的。这就需要将用户登录信息进行缓存处理,以解决使用负载均衡,在集群环境下用户会话保持问题。由于系统的业务要求,在访问每个页面时需要频繁获取当前登录用户信息,从云数据库的监控信息来看连接数较高。将用户登录信息进行缓存处理,同样可以有效减缓数据库的访问压力。2.解决方案6.1场景导入任务学习6.2知识点讲解 目录CONTENTS6.2.1Redis概述Redis是一个依据BSD开源协议的高性能Key-Value存储系统(CacheandStore),使用ANSIC语言编写,提供多种语言的API,支持网络。Redis的开发工作最早由VMware主持。Memcached是一个分布式高速缓存系统,是基于内存的Key-Value存储,用来存储小块的任意数据(字符串、对象)。Redis和Memcached类似,支持存储的value类型相对更多,包括字符串(String)、散列(Hash)、链表(List)、集合(Set)、有序集合(SortedSet)。这些数据类型都支持PUSH/POP、ADD/REMOVE和取交集、并集、差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与Memcached一样,为了保证效率,数据都是缓存在内存中。不同的是Redis会周期性地把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了Master-Slave(主、从)同步。丰富的数据结构使得Redis的设计非常的有趣。1.Redis概念6.2.1Redis概述Redis的出现很大程度补偿了Memcached这类Key-Value存储的不足,在部分场合可以对关系数据库起到较好的补充作用。它提供了包括Java、C/C++、C#、PHP、JavaScript、Perl、ObjectC、Python、Ruby和Erlang等客户端,使用很方便。Redis支持主、从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意地对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。2.Redis原理6.2.2Redis配置Redis可以在没有配置文件的情况下通过内置的配置来启动,但是这种启动方式只适用于开发和测试。合理地配置Redis的方式是提供一个Redis配置文件,这个文件通常叫作redis.conf。redis.conf文件中包含了很多格式简单的指令如下:keywordargument1argument2...argumentN

关键字

参数1

参数2...

参数N示例:slaveof6380如果参数中含有空格,那么可以用双引号requirepass"helloworld"1.基本操作6.2.2Redis配置自Redis2.6起可以直接通过命令行传递Redis配置参数。示例:配置一个新运行并以6380为端口的Redis实例,将它配置为:6379Redis实例的slave。./redis-server--port6380--slaveof6379通过命令行传递的配置参数的格式和在redis.conf中设置的配置参数的格式完全一样,唯一不同的是需要在关键字之前加上前缀“--”。2.命令行传递参数6.2.2Redis配置Redis允许在运行的过程中,在不重启服务器的情况下更改服务器配置,同时也支持使用特殊的“CONFIGSET”和“CONFIGGET”命令用编程方式查询并设置配置。需要确保的是在通过“CONFIGSET”命令进行设置的同时,也需要在redis.conf文件中进行相应的更改。未来Redis有计划提供一个“CONFIGREWRITE”命令,在不更改现有配置文件的同时,根据当下的服务器配置对redis.conf文件进行重写。3.运行时配置更改6.2.2Redis配置如果把Redis当作一个缓存来用,所有的Key都有过期时间,使用以下设置(假设最大内存使用量为2MB):maxmemory2mbmaxmemory-policyallkeys-lru以上设置并不需要我们的应用使用“EXPIRE”命令(或相似的命令)去设置每个Key的过期时间,因为只要内存使用量到达2MB,Redis就会使用类LRU算法自动删除某些Key。4.配置Redis成为一个缓存6.2.3Redis使用场景在主页中显示最新的项目列表一些网站需要展示最近、最热、点击率最高、活跃度最高的TopList,就比较适合使用Redis作为存储。可以用LPUSH来插入一个内容ID,作为关键字存储在列表头部。LTRIM用来限制列表中的项目数最多为5000。如果用户需要检索的数据量超越了这个缓存容量,这时才需要把请求发送到数据库。排行榜及相关问题排行榜(LeaderBoard)按照得分进行排序。使用ZADD命令可以实现该功能,而ZREVRANGE命令可以用来按照得分获取前100名的用户,ZRANK可以用来获取用户排名,非常直接而且操作容易。1.使用场景6.2.3Redis使用场景按照用户投票和时间排序LPUSH和LTRIM命令结合运用,把文章添加到一个列表中。一项后台任务用来获取列表,并重新计算列表的排序,ZADD命令用来按照新的顺序填充生成列表。即使是负载很重的站点,也可以实现非常快速的检索。计数进行各种数据统计的用途是非常广泛的,INCRBY命令让这些变得很容易,通过原子递增保持计数;GETSET用来重置计数器;过期属性用来确认一个关键字什么时候应该删除。队列在当前的编程中队列随处可见。除了PUSH和POP类型的命令之外,Redis还有阻塞队列的命令,能够让一个程序在执行时被另一个程序添加到队列。用户也可以做些更有趣的事情,比如一个旋转更新的RSSfeed队列。1.使用场景6.2.4阿里云云数据库Redis版阿里云云数据库Redis版(AliCloudDBforRedis)是兼容开源Redis协议的Key-Value类型在线存储服务。它支持字符串(String)、链表(List)、集合(Set)、有序集合(SortedSet)、散列(Hash)等多种数据类型,以及事务(Transactions)、消息订阅与发布(Pub/Sub)等高级功能。通过内存+硬盘的存储方式,AliCloudDBforRedis在提供高速数据读写能力的同时满足数据持久化需求。AliCloudDBforRedis作为云计算服务,其硬件和数据部署在云端,有完善的基础设施规划、网络安全保障、系统维护服务。用户专心致力于自身业务创新。1.概要6.2.4阿里云云数据库Redis版简单易用服务开箱即用:支持即开即用的方式,购买之后即刻可用,方便业务快速部署。兼容开源Redis:兼容Redis命令,任何Redis客户端都可以轻松与AliCloudDBforRedis建立连接并进行数据操作。可视化的管理监控面板:控制台提供多项监控统计信息,并可以进行管理操作。弹性扩容存储容量一键扩容:用户可根据业务需求通过控制台对实例存储容量进行调整(公测期间需申请开通)。在线扩容不中断服务:调整实例存储容量可在线进行,无须停止服务,不影响用户自身业务。2.特点6.2.4阿里云云数据库Redis版高可用每个实例均有主、从双节点:避免单点故障引起的服务中断。硬件故障自动检测与恢复:自动侦测硬件故障并在数秒内切换,恢复服务。高可靠数据持久化存储:内存+硬盘的存储方式,在提供高速数据读写能力的同时满足数据持久化需求。数据主、从双备份:所有数据在主、从节点上进行双备份。2.特点6.2.4阿里云云数据库Redis版3.相关术语术语说明RedisRedis是一款依据BSD开源协议发行的高性能Key-Value存储系统(CacheandStore)实例ID实例对应一个用户空间,是使用KVStore的基本单位。KVStore对单个实例根据不同的容量规格有不同的连接数、带宽、CPU处理能力等限制。用户可在控制台中看到自己购买的实例ID列表。KVStore实例分为主-从双节点实例和高性能集群实例两种主-从双节点实例是指具备主-从架构的AliCloudDBforRedis实例。主-从双节点能扩展的容量和性能有限高性能集群实例是指具有集群扩展性的AliCloudDBforRedis实例。集群实例有更好的扩展性和性能,但是在功能上也有一定的限制连接地址用于连接AliCloudDBforRedis的Host地址。以域名方式展示,可在实例信息→连接信息中查询到连接密码用于连接AliCloudDBforRedis的密码。密码拼接方法为:实例ID:自定义密码。例如,在购买时设置的密码为1234,分配的实例ID为××××,那么密码即为××××:1234逐出策略与Redis的逐出策略保持一致。具体参见http://redis.io/topics/lru-cacheDB即Redis中的Database。AliCloudDBforRedis支持16个DB,默认写入到第0个DB中6.2.4阿里云云数据库Redis版游戏玩家积分排行榜AliCloudDBforRedis在功能上与Redis基本一致,因此很容易用它来实现一个在线游戏中的积分排行榜功能。网上商城商品相关性分析AliCloudDBforRedis在功能上与Redis基本一致,因此很容易利用它来实现一个网上商城的商品相关性分析程序。商品的相关性就是某个产品与其他另外某商品同时出现在购物车中的情况。这种数据分析对于电商行业是非常重要的,可以用来分析用户购买行为。消息的发布与订阅AliCloudDBforRedis也提供了与Redis相同的消息发布(Pub)与订阅(Sub)功能,即一个Client发布消息,其他多个Client订阅消息。4.使用场景6.2.4阿里云云数据库Redis版管道传输(Pipeline)AliCloudDBforRedis提供了与Redis相同的管道传输机制。管道将客户端Client与服务器端的交互明确划分为单向的发送请求(SendRequest)和接收响应(ReceiveResponse)。用户可以将多个操作连续发给服务器,但在此期间服务器端并不对每个操作命令发送响应数据;全部请求发送完毕后用户关闭请求,开始接收响应获取每个操作命令的响应结果。事务处理(Transaction)AliCloudDBforRedis支持Redis中定义的事务机制,即用户可以使用MULTI、EXEC、DISCARD、WATCH和UNWATCH指令来执行原子性的事务操作。注意:Redis中定义的事务并不是关系数据库中严格意义上的事务。当Redis事务中的某个操作执行失败,或者用DISCARD取消事务时,Redis并不执行“事务回滚”。4.使用场景6.1场景导入6.2知识点讲解任务学习目录CONTENTS任务学习本书旨在让学生通过完成一系列的操作任务进行实际操作的学习,书中将一个完整的项目工程案例细化成相对独立的任务,本书使用“慕课云”MOOC平台作为项目案例。书中相关资源可以从下载,包含“慕课云”案例的源代码以及网站发布包。注:配套提供的安全代码仅供参考,也仅限于本书案例学习使用。云平台界面更新变化快,教材用图跟实际平台有出入,请以官网云平台操作界面为准。任务6.1使用Redis缓存热点数据针对“慕课云”系统创建云数据库Redis实例,然后设置Tomcat集群的Session共享,重启Tomcat服务,登录“慕课云”系统,然后进入云数据库Redis的DMS查看会话记录。1.任务描述任务6.1使用Redis缓存热点数据学会Tomcat集群的Session共享设置。掌握云数据库Redis基本操作命令的使用。2.任务目标任务6.1使用Redis缓存热点数据【准备】已注册成为阿里云用户,且账号经过实名认证。基于SLB+ECS架构部署“慕课云”。3.任务实施任务6.1使用Redis缓存热点数据【步骤】(1)创建Redis实例。(2)Tomcat集群的Session共享设置。(3)通过DMS查看配置结果。(4)使用DMS管理Redis数据库。(5)使用客户端连接Redis数据库。(6)通过公网连接云数据库Redis。3.任务实施任务6.2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论