在 Web 应用程序中管理用户会话的方法有多种,包括仅使用 Cookie、分布式键/值数据库,还包括服务器本地缓存。在响应给定请求的 Web 服务器中存储会话数据似乎很方便,因为访问数据不会引起网络延迟。主要缺点是必须小心地路由请求,以便每个用户只与一个服务器交互。另一个缺点是,一旦服务器停机,所有会话数据也将丢失。分布式内存中键/值数据库可以解决这两个问题,只不过要付出微小的代价:网络略有延迟。大多数情况下,将所有会话数据存储在 Cookie 中已足以满足要求;如果您计划存储敏感数据,最好使用服务器端会话。
在本教程中,您将学习如何将 Amazon ElastiCache for Redis 用作分布式缓存来进行会话管理。您还将学习配置 ElastiCache 节点的最佳实践,以及如何处理应用程序中的会话。
本教程中创建的 Amazon ElastiCache 节点可使用 AWS 免费套餐。
时间:120 分钟
费用:免费套餐资格
使用案例:会话存储、会话缓存、高可用性、实时应用程序
产品:Amazon ElastiCache for Redis、AWS 免费套餐、Amazon EC2
受众:开发人员
等级:初级
上次更新日期:2019 年 7 月 25 日
*此估算值假定您在整个教程中遵循建议的配置,并在 2 小时内终止所有资源。
**过去 24 小时内创建的账户可能尚不具有访问此项目所需资源的权限。
所需时间:20 分钟
本教程通过用 Python 编写的几个示例和用于 Web 开发的 Flask 微框架说明一些机制。我们希望这些代码能很容易地转换为您选用的语言。
要完成本教程,您需要访问 EC2 实例。如果您尚未运行任何实例,请按照下面的说明预置一个。
确保该实例的安全组允许端口 5000 上的传入 TCP 连接。
访问 EC2 实例之后,运行以下命令:
syntax: shell
$ sudo yum install git $ sudo yum install python3 $ sudo pip3 install virtualenv $ git clone https://github.com/aws-samples/amazon-elasticache-samples/ $ cd amazon-elasticache-samples/session-store $ virtualenv venv $ source ./venv/bin/activate $ pip3 install -r requirements.txt $ export FLASK_APP=example-1.py $ export SECRET_KEY=some_secret_string $ flask run -h 0.0.0.0 -p 5000 --reload
这将在端口 5000 上启动 Flask 应用程序。如果服务器没有报告任何错误,您应该能够在 EC2 实例中通过命令行访问应用程序,如下所示:
syntax: shell
$ curl http://127.0.0.1:5000/
如果一切正常,您现在应可以获取 EC2 实例的公有 IP 地址,并尝试从您的计算机访问 Web 应用程序。

为了从浏览器访问应用程序,请复制 EC2 实例的公有 DNS 名称并附加端口号 5000。例如,根据屏幕截图中的地址,URL 为 http://ec2-54-175-201-152.compute-1.amazonaws.com:5000/。
现在您已准备就绪,可以开始学习教程了。