我尝试做了一个用于构建在线应用程序快速会话存储的AWS ElastiCache for Redis教程
一开始
我已经尝试了下面的教程。由于在资格考试中经常遇到ElastiCache用于保留会话数据和加速数据库处理等,所以我一直想要实际使用它。我学会了如何启动ElastiCache,添加和删除缓存,以及设置TTL。
创建 Redis 集群。
在集群引擎中选择”Redis”,在位置上选择”Amazon云”。
请按照以下设置。
在子网组中选择“新建”。VPC选择默认选项。选择两个子网。在可用区配置中选择“无指定”选项。
另外,勾选选择区域后,您可以选择将主要服务和副本服务放置在哪个可用区。本次我们将勾选“未指定”。
由于本次是为了进行操作验证,我们将取消“启用自动备份”的勾选。
点击「创建」按钮。
因为创建需要一段时间,所以在这段时间内启动 EC2(Linux2,t2.micro)。
使用 EC2 访问 Redis
执行以下命令,构建应用程序。复制REDIS_URL为以下主要端点。
sudo yum -y update
sudo yum -y install git
sudo pip3 install virtualenv
git clone https://github.com/aws-samples/amazon-elasticache-samples/
cd amazon-elasticache-samples/
virtualenv venv
source ./venv/bin/activate
cd session-store/
pip3 install -r requirements.txt
export FLASK_APP=example-1.py
export SECRET_KEY=test
export REDIS_URL="redis://elc-tutorial.mdb3zt.ng.0001.apne1.cache.amazonaws.com:6379"
我们要确认能否连接到 Redis。打开 Python 的交互模式,并执行以下命令。如果返回 True,则表示连接成功。
>>> import redis
>>> client = redis.Redis.from_url('redis://elc-tutorial.mdb3zt.ng.0001.apne1.cache.amazonaws.com:6379')
>>> client.ping()
True
样本1
开始应用程序。
flask run -h 0.0.0.0 -p 5000 --reload
打开浏览器,访问http://public-dns:5000 或者 http://public-ip:5000。
接下来,访问 http://public-dns:5000/login。
我通过 test-user-1 的用户名成功登录。
访问 http://public-dns:5000/logout ,进行注销操作。您将被重定向到以下页面,并确认已成功注销。
请给我第二个样品。 wǒ dì èr gè .)
按下Ctrl + C来停止应用程序,并尝试第二个示例。重新设置环境变量如下所示。
export FLASK_APP=example-2.py
重新启动应用程序。
flask run -h 0.0.0.0 -p 5000 --reload
访问 http://public-dns:5000/login 并登录后,将显示计数器。
每当刷新页面时,可以观察到Visits会增加。这是通过使用hincrby()方法逐渐增加以下的visits而实现的。
# Connect to Redis with the REDIS_URL environment variable.
store = redis.Redis.from_url(os.environ.get('REDIS_URL'))
@app.route('/')
def index():
if 'username' in session:
username = escape(session['username'])
# インクリメント
visits = store.hincrby(username, 'visits', 1)
return '''
Logged in as {0}.<br>
Visits: {1}
'''.format(username, visits)
return 'You are not logged in'
另附样本三
接下来,我将尝试第三个样本。
export FLASK_APP=example-3.py
flask run -h 0.0.0.0 -p 5000 --reload
通过将TTL设置为10秒,在经过10秒以上后进行更新,可以确认Visits会恢复为1。具体的源码如下所示。
# Connect to Redis with the REDIS_URL environment variable.
store = redis.Redis.from_url(os.environ.get('REDIS_URL'))
@app.route('/')
def index():
if 'username' in session:
username = escape(session['username'])
visits = store.hincrby(username, 'visits', 1)
# TTL を 10 秒に設定
store.expire(username, 10)
return '''
Logged in as {0}.<br>
Visits: {1}
'''.format(username, visits)
return 'You are not logged in'
- 何回かページを更新する
- 10 秒以上待ってから再度更新する