缓存系统
缓存
简介
对任何项目来说缓存都是一个重要方面,通常用于加速从不更改且需要消耗大量资源才能获取的数据。强大的缓存支持在任何应用程序中都很重要,Masonent 提供了开箱即用的出色缓存支持。
入门
我们需要 CacheProvider
才能激活 Masonent 的缓存。通过转到我们的 config/application.py
文件,并将服务提供者masonite.providers.CacheProvider.CacheProvider
添加到PROVIDERS
列表中,就可以非常简单地完成此操作。
所有配置设置都在 config/cache.py
文件中。Masonite 仅随附一个简单的 disk
驱动程序,该驱动程序将所有缓存存储在文件系统上。
默认情况下,Masonite 会将缓存存储在 bootstrap/cache
目录下,但可以在 config/cache.py
文件中的 DRIVERS
词典中轻松更改。例如,要从 bootstrap/cache
更改为 storage/cache/templates
目录,这将类似于:
DRIVERS = {
'disk': {
'location': 'storage/cache/templates'
}
}
Redis
Masonite 还支持 Redis 驱动程序。确保 Redis 服务器正在运行,并且:
$ pip install redis
DRIVER = 'redis'
DRIVERS = {
'disk': {
'location': 'storage/cache/templates'
},
'redis': {
'host': os.getenv('REDIS_HOST', 'localhost'),
'port': os.getenv('REDIS_PORT', '6379'),
'password': os.getenv('REDIS_PASSWORD', '')
}
}
将所需的环境 keys 添加到您的 .env
文件中,您就可以开始了!
使用缓存
要开始使用缓存,我们可以使用从 CacheProvider
服务提供者加载到容器中的 Cache
别名。我们可以在容器解析的任何方法 (例如驱动程序,中间件和控制器) 内部的容器中检索此信息。例如,我们可以从控制器方法中检索它,如下所示:
from masonite import Cache
def show(self, cache: Cache):
cache # returns the cache class
请记住,Masonite 使用服务容器和自动依赖项注入。您可以在 [Service Container](../ architectural-concepts / service-container.md) 文档下阅读有关它的更多信息。
存储
通过执行以下操作,我们可以轻松地将 items 存储到缓存中:
from masonite import Cache
def show(self, cache: Cache):
cache.store('key', 'value')
这将创建一个 bootstrap/cache/key.txt
文件,其中包含一个简单的 value
。
还请注意,如果目录不存在,将会自动创建。
缓存时间
我们可能只想缓存几秒钟或几天,所以我们可以执行以下操作:
from masonite import Cache
def show(self, cache: Cache):
cache.store_for('key', 'value', 5, 'seconds')
这将存储缓存 5 秒钟。如果您尝试在 5 秒后检索此值,则Cache 类将返回 None
,因此请务必进行检查。
获取
如果我们只能存储值而不能检索它们,那就不太好了。因此,我们还可以通过执行以下操作来实现:
from masonite import Cache
def show(self, cache: Cache):
cache.get('key')
同样,如果缓存过期,它将返回 None
。 如果对缓存没有时间限制,则会始终返回缓存值。
检查有效性
您还可以通过以下操作显式检查缓存是否仍然有效:
from masonite import Cache
def show(self, cache: Cache):
cache.is_valid('key')
如果键有效,则将返回布尔值。这意味着它没有过期。
检查缓存是否存在
有时我们甚至必须检查缓存是否存在,因此我们可以通过运行以下命令来实现:
from masonite import Cache
def show(self, cache: Cache):
cache.exists('key')
这将返回一个布尔值来标示缓存存在与否
更新
我们可能还想更新缓存。对于现实世界的示例,例如,在更新高速缓存以进行速率限制时,将其用于API。这不会重置到期时间,只会更新值。
from masonite import Cache
def show(self, cache: Cache):
cache.update('key', 'value')
删除
您可以使用以下方法按 key 删除缓存:
from masonite import Cache
def show(self, cache: Cache):
cache.delete('key')
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。