缓存系统

未匹配的标注
本文档最新版为 4.0,旧版本可能放弃维护,推荐阅读最新版!

缓存

简介

对任何项目来说缓存都是一个重要方面,通常用于加速从不更改且需要消耗大量资源才能获取的数据。强大的缓存支持在任何应用程序中都很重要,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')

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/masonite/2.3/us...

译文地址:https://learnku.com/docs/masonite/2.3/us...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~