第2章 使用 Redis构建Web应用

本章主要内容
 
1.登录cookie
2.购物车cookie
3.缓存生成的网页
4.缓存数据库行
5.分析网页访问记录
 
本章的所有内容都是围绕着发现并解决Fake Web Retailer这个虚构的大型网上商店来展开的, 这个商店每天都会有大约500万名不同的用户, 这些用户会给网站带来1亿次点击, 并从网站购买超过10万件商品。 我们之所以将Fake Web Retailer的几个数据量设置得特别大, 是考虑到如果可以在大数据量背景下顺利地
 
章列举的所有解决方案(以及它们的一些变种) 都在生产环境中实际使用过。 说得更具体一点, 通过将传统数据库的一部分数据处理任务以及存储任务转交给Redis来完成,
 

 
2.1 登录和cookie缓存
每当我们登录互联网服务(比如银行账户或者电子邮件) 的时候,这些服务都会使用cookie来记录我们的身份。 cookie由少量数据组成,网站会要求我们的浏览器存储这些数据, 并在每次发送请求时将这些数据传回给服务。
对于用来登录的cookie,
有两种常见的方法可以将登录信息存储在cookie里面:
一种是签名( signed) cookie,
另一种是令牌( token) cookie。
 
签名 cookie通常会存储用户名, 可能还有用户 ID、 用户最后一次成功登录的时间, 以及网站觉得有用的其他任何信息。 除了用户的相关信息之外, 签名 cookie还包含一个签名, 服务器可以使用这个签名来验证浏览器发送的信息是否未经改动(比如将cookie中的登录用户名改成另一个用户) 。
 
令牌 cookie会在cookie里面存储一串随机字节作为令牌, 服务器可以根据令牌在数据库中查找令牌的拥有者。 随着时间的推移, 旧令牌会被新令牌取代。
 
案例:
使用Redis重新实现登录cookie功能, 取代目 前由关系数据库实现的登录cookie功能。
 
1.一个散列来存储登录cookie令牌与已登录用户之间的映射
2.用户每次浏览页面的时候, 程序都会对用户存储在登录散列.里面的信息进行更新, 并将用户的令牌和当前时间戳添加到记录最近登
录用户的有序集合里面; 如果用户正在浏览的是一个商品页面, 那么程序还会将这个商品添加到记录这个用户最近浏览过的商品的有序集合里面, 并在被记录商品的数量超过25个时, 对这个有序集合进行修剪。
3.因为存储会话数据所需的内存会随着时间的推移而不断增加, 所以我们需要定期清理旧的会话数据
 
2.2 使用 Redis实现购物车
将购物车的信息也存储到Redis里面, 并且使用与用户会话cookie相同的cookie ID来引 用购物车。
 
2.3 网页缓存
 
2.4 数据行缓存
为了应对促销活动带来的大量负载, 我们需要对数据行进行缓存,具体的做法是: 编写一个持续运行的守护进程函数, 让这个函数将指定的数据行缓存到Redis里面, 并不定期地对这些缓存进行更新(热点缓存?)
 
2.5 网页分析
有序集合排序
 
 
 

redis实战笔记(2)-第2章 使用 Redis构建Web应用的更多相关文章

  1. java并发编程实战笔记---(第五章)基础构建模块

    . 5.1同步容器类 1.同步容器类的问题 复合操作,加容器内置锁 2.迭代器与concurrentModificationException 迭代容器用iterator, 迭代过程中,如果有其他线程 ...

  2. redis实战笔记(10)-第10章 扩展Redis

    本章主要内容   扩展读性能 扩展写性能以及内存容量 扩展复杂的查询   随着Redis的使用越来越多, 只使用一台Redis服务器没办法存储所有数据或者没办法处理所有读写请求的问题迟早都会出现, 这 ...

  3. redis实战笔记(6)-第6章 使用 Redis构建应用程序组件

    本章主要内容   1.构建两个前缀匹配自 动补全程序 2.通过构建分布式锁来提高性能 3.通过开发计数信号量来控制并发 4.构建两个不同用途的任务队列 5.通过消息拉取系统来实现延迟消息传递 6.学习 ...

  4. redis实战笔记(4)-第4章 数据安全与性能保障

    本章主要内容 4.1 将数据持久化至硬盘 4.2 将数据复制至其他机器 4.3 处理系统故障 4.4 Redis事务 4.5 非事务型流水线( non-transactional pipeline) ...

  5. redis实战笔记(3)-第3章 Redis命令

    第3章 Redis命令   本章主要内容 字符串命令. 列表命令和集合命令 散列命令和有序集合命令 发布命令与订阅命令 其他命令   在每个不同的数据类型的章节里, 展示的都是该数据类型所独有的. 最 ...

  6. redis实战笔记(1)-第1章 初识Redis

    第1章 初识Redis 注:本书在redis3.0版本的,比如redis3.0以后支持服务端集群.3.0之前只能客户端分片.    本章主要内容 1.Redis与其他软件的相同之处和不同之处 2.Re ...

  7. Redis学习笔记(二) ---- PHP操作Redis各数据类型

    Redis 一.使用PHP操作Redis存储系统中的各类数据类型方法 1.String(字符串)操作 <?php // 1. 实例化 $redis = new Redis; // 2. 连接 r ...

  8. Redis学习笔记(一)Windows下redis的安装和启动

    在Windows上安装redis 下载地址:https://github.com/microsoftarchive/redis/releases 选择图中红框标出来的下载,解压到磁盘上,文件夹命名为r ...

  9. redis实战笔记(9)-第9章 降低内存占用

    本章主要内容   1.短结构( short structure) 2.分片结构( shared structure) 3.打包存储二进制位和字节   本章将介绍3种非常有价值的降低Redis内存占用的 ...

随机推荐

  1. (原创)hibernate 一对多建表实例详解 附上各个注释的含义

    这个是hibernate的一对多建表实例:一的一端是部门(Department),对的一端是员工(Employee),下面贴上成员源代码:其中@mappedBy是加在@OneToMany一端,并且它的 ...

  2. Android-XML格式描述

    XML是W3C公司提出的标准,使用范围非常广阔,在框架的配置,程序的配置,布局文件的定义,网络传输等,无所不在: 以前学Java的时候,对XML的名词定义是,根节点,子节点 等等,而在Android里 ...

  3. SED 学习笔记

    1. Sed简介   sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成 ...

  4. 5.WebAPI的Filter

    1.WebApi的Filter介绍: 大家知道什么是AOP(aspect oriented programming)吗?它是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添 ...

  5. Windows10 家庭版添加【本地组策略编辑器】

    Windows10 家庭版默认没有[本地组策略编辑器],添加方法: 新建记事本复制以下内容 @echo off pushd "%~dp0" dir /b C:\Windows\se ...

  6. day 77 基于form组件的注册功能

    Form 表单 py文件 from django import forms #定义一个form类注册用 class RegForm (forms.Form): username =forms.Char ...

  7. jmeter 中使用ServerAgen链接超时可能出错的原因之一ip不对

    因为我要压测的服务器是需要使用跳板机转发链接的,所以我开始用的是跳板机的IP+ServerAgen端口,发现连不通,实际上应该使用ServerAgen所在服务器的IP,如果:

  8. JAVA并发编程学习笔记------多线程调优

    1. 多线程场景下尽量使用并发容器代替同步容器 (如ConcurrentHashMap代替同步且基于散列的Map, 遍历操作为主要操作的情况下用CopyOnWriteArrayList代替同步的Lis ...

  9. springmvc执行流程详细介绍

    1.什么是MVC MVC是Model View Controller的缩写,它是一个设计模式 2.springmvc执行流程详细介绍 第一步:发起请求到前端控制器(DispatcherServlet) ...

  10. day 65 crm(2) admin源码解析,以及简单的仿造admin组件

    前情提要: crm中的admin组件重写. 一:admin的autodiscover 作用:实现扫面该项目中的所有的admin 1:执行顺序-> 按照注册的顺序执行 二:单例模式 1:普通案例的 ...