第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. spring mvc学习笔记(一)web.xml文件配置的一点重要信息

    通过这个web.xml文件可以看出,所有的*.shtml的请求,都会被springmvc这个servlet处理.这里如果没有指定contextConfigLocation这个参数,将会按照默认规则在c ...

  2. Oracle EBS 常用网站列表

    http://www.lifandong.com/erp/356 Oracle EBS 常用网站列表 英文站: Oracle EBS R12 官方参考手册(User Guide, Implementa ...

  3. 一起学习MVC(3)Views的学习

          _ViewStart.cshtml._Layout.cshtml.Index.cshtml三个页面加载时候的先后顺序就是: _Layout.cshtml ViewStart.cshtml ...

  4. 微信小程序支付C#后端源码

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  5. 使用Spring Boot,Spring Cloud和Docker实现微服务架构

    https://github.com/sqshq/PiggyMetrics     Microservice Architecture with Spring Boot, Spring Cloud a ...

  6. (转)为什么要重写 hashcode 和 equals 方法?

    作者丨hsm_computer cnblogs.com/JavaArchitect/p/10474448.html 我在面试Java初级开发的时候,经常会问:你有没有重写过hashcode方法?不少候 ...

  7. 一次对webshell的后门的查看

    本文作者i春秋作家——非主流 昨天晚上突发奇想的想去看看github上面tennc的webshell收集项目中的shell有没有漏洞,比如未授权啊啥的,结果找半天都没找到...但是机缘巧合下,居然给我 ...

  8. 微信小程序redirect 到tab不刷新

    // 更新2018/11/20:现在小程序的页面栈长度为10 更正 2018/11/20: 经过一段时间的实践,我发现以前方法存在很多问题,比如 getCurrentPages 方法并不在官方的 AP ...

  9. JavaScript 函数的4种调用方法

    JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. 作为一个函数调用 function myFunction(a, b) { return a * b; } ...

  10. java基本语法一

    1 关键字和保留字 1.1 关键字 关键字的定义:被java语言赋予了特殊含义,用做专门用途的字符串(单词). 关键字的特点:关键字中的所有字母都是小写. 1.2 保留字 java保留字:现有Java ...