《Redis实战》一第2章 使用Redis构建Web应用

第2章 使用Redis构建Web应用

Redis实战
本章主要内容

  • 登录cookie
  • 购物车cookie
  • 缓存生成的网页
  • 缓存数据库行
  • 分析网页访问记录

前面的第1章对Redis的特性和功能做了简单的介绍,本章将紧接上一章的步伐,通过几个示例,对一些典型的Web应用进行介绍。尽管本章展示的问题比起实际情况要简单得多,但这里给出的网络应用实际上只需要进行少量修改就可以直接应用到真实的程序里面。本章的主要任务是作为一个实用指南,告诉你可以使用Redis来做些什么事情,而之后的第3章将对Redis命令进行更详细的介绍。

从高层次的角度来看,Web应用就是通过HTTP协议对网页浏览器发送的请求进行响应的服务器或者服务(service)。一个Web服务器对请求进行响应的典型步骤如下。

(1)服务器对客户端发来的请求(request)进行解析。

(2)请求被转发给一个预定义的处理器(handler)。

(3)处理器可能会从数据库中取出数据。

(4)处理器根据取出的数据对模板(template)进行渲染(render)。

(5)处理器向客户端返回渲染后的内容作为对请求的响应(response)。

以上列举的5个步骤从高层次的角度展示了典型Web服务器的运作方式,这种情况下的Web请求被认为是无状态的(stateless),也就是说,服务器本身不会记录与过往请求有关的任何信息,这使得失效(fail)的服务器可以很容易地被替换掉。有不少书籍专门介绍了如何优化响应过程的各个步骤,本书要做的事情也和它们类似,不同之处在于,本书讲解的是如何使用更快的Redis查询来代替传统的关系数据库查询,以及如何使用Redis来完成一些使用关系数据库没办法高效完成的任务。

本章的所有内容都是围绕着发现并解决Fake Web Retailer这个虚构的大型网上商店来展开的,这个商店每天都会有大约500万名不同的用户,这些用户会给网站带来1亿次点击,并从网站购买超过10万件商品。我们之所以将Fake Web Retailer的几个数据量设置得特别大,是考虑到如果可以在大数据量背景下顺利地解决问题,那么解决小数据量和中等数据量引发的问题就更不在话下了。另外,尽管本章展示的解决方案都是为了解决Fake Web Retailer这个大型网店所遇到的问题而给出的,但除了其中一个解决方案之外,其他所有解决方案都可以在一个只有几GB内存的Redis服务器上面使用,并且这些解决方案的目标都在于提高系统响应实时请求的性能。

本章列举的所有解决方案(以及它们的一些变种)都在生产环境中实际使用过。说得更具体一点,通过将传统数据库的一部分数据处理任务以及存储任务转交给Redis来完成,可以提升网页的载入速度,并降低资源的占用量。

我们要解决的第一个问题就是使用Redis来管理用户登录会话(session)。

时间: 2024-09-07 11:05:16

《Redis实战》一第2章 使用Redis构建Web应用的相关文章

《Redis实战》一1.1 Redis简介

1.1 Redis简介 前面对于Redis数据库的描述只说出了一部分真相.Redis是一个速度非常快的非关系数据库(non-relational database),它可以存储键(key)与5种不同类型的值(value)之间的映射(mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片①来扩展写性能,接下来的几节将分别介绍Redis的这几个特性. 1.1.1 Redis与其他数据库和软件的对比 如果你熟悉关系数据库,那么你肯定写过用来关联两

《Redis实战》一1.2 Redis数据结构简介

1.2 Redis数据结构简介 正如之前的表1-1所示,Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为STRING(字符串).LIST(列表).SET(集合).HASH(散列)和ZSET(有序集合).有一部分Redis命令对于这5种结构都是通用的,如DEL.TYPE.RENAME等:但也有一部分Redis命令只能对特定的一种或者两种结构使用,第3章将对Redis提供的命令进行更深入的介绍. 大部分程序员应该都不会对Redis的STRING.LIST.HASH这3种

《Redis实战》一第1章 初识Redis

第1章 初识Redis Redis实战 本章主要内容 Redis与其他软件的相同之处和不同之处 Redis的用法 使用Python示例代码与Redis进行简单的互动 使用Redis解决实际问题 Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型.Redis提供了5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上:Redis的数据结构致力于帮助用户解决问题,而不会像其他数据库那样,要求用户扭曲问题来适应数据库.除此之外,通

《Redis实战》一导读

前 言 Redis实战Chris Testa是我在圣莫尼卡Google分部工作时认识的一个朋友,我从2010年3月开始和他一起在加利福尼亚州贝弗利山的一间小创业公司工作,Chris是公司的领头和主管,而我则受聘于他成为了公司研究部门的架构师. 在对某个不相关的问题进行了一个下午的讨论之后,Chris向我推荐了Redis,他认为我这个理论计算机科学专业毕业的人应该会对这个数据库感兴趣.在使用Redis并按照自己的想法对Redis打补丁几个星期之后,我开始参与邮件列表里面的讨论,并向其他人提供建议或

《Redis实战》一第一部分 入门

第一部分 入门 Redis实战本书最开始的两章将对Redis进行介绍,并展示Redis的一些基本用法.读完这两章之后,读者应该能够用Redis对自己的项目进行一些简单的优化.

《Redis实战》一2.1 登录和cookie缓存

2.1 登录和cookie缓存 每当我们登录互联网服务(比如银行账户或者电子邮件)的时候,这些服务都会使用cookie来记录我们的身份.cookie由少量数据组成,网站会要求我们的浏览器存储这些数据,并且在每次服务发出请求时再将这些数据传回给服务.对于用来登录的cookie,有两种常见的方法可以将登录信息存储在cookie里面:一种是签名(signed)cookie,另一种是令牌(token)cookie. 签名cookie通常会存储用户名,可能还有用户ID.用户最后一次成功登录的时间,以及网站

Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-1

原文:Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-1 学习目标 一.进一步学习Swift的游戏制作 二.掌握SKNode,SKSpriteNode的运用 三.了解SpriteKit的物理系统 四.掌握动作(SKAction)的运用   在这一章,我们要通过制作跑酷熊猫这个游戏来进一步学习Swift的游戏开发.首先我们要知道自己将要编写的是一个什么样的游戏.先来看一下游戏截图.   跑酷熊猫是一个跑酷类的游戏.我们将操控熊猫这个胖纸施展轻功,在或长或短的平台上飞奔,同时还要收集小苹果.跑的

NoSQL之Redis(一)---CentOS6.5安装Redis

NoSQL之Redis(一)---CentOS6.5安装Redis             上周由于项目的需要在Linux服务器上安装了一个Redis,这篇博文主要是介绍一下如何在CentOS下安装redis,当然安装之前我们还是先来看看什么事Redis吧.            简介          redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted s

《JavaScript构建Web和ArcGIS Server应用实战》——第1章 HTML、CSS和JavaScript简介

第1章 HTML.CSS和JavaScript简介 JavaScript构建Web和ArcGIS Server应用实战 在开始使用ArcGIS API for JavaScript进行GIS应用程序开发之前,你需要理解一些基本概念.对于那些已经熟悉HTML.JavaScript和CSS的读者来说,就请跳过这一章直接到下一章进行学习.但是,如果你刚开始了解这些概念,请继续阅读.我们将从基础概念开始介绍这些主题,这足以让你入门.关于这些主题的更高层次的学习,有很多学习资源提供,包括书籍和在线教程.你