rodchyn/stash

存储缓存的地方。

v0.14.1 2016-02-10 22:23 UTC

README

License Latest Stable Version Coverage Status Total Downloads

Stash 通过缓存昂贵函数或代码的结果,使加速代码变得简单。某些操作,如数据库查询或调用外部API,运行时间很长,但短期内往往会有相同的结果。这使得存储结果并在以后重新调用它们要高效得多。

安装

可以通过多种方法安装 Stash,尽管推荐使用 Composer。

Composer

在 Stash 达到 1.0 版本并具有稳定的 API 之前,建议在次要更新之前查看更改,尽管错误修复始终向后兼容。

"require": {
  "tedivm/stash": "0.14.*"
}

Github

Stash 的版本可在 Github 上找到。

文档

尽管本 README 包含一些有用的数据,但主要网站 stashphp.com 上有更多信息。

核心概念

主要类

Stash 有三个主要组件:一个代表特定分组缓存对象的 Pool 类,一个提供对单个对象访问的 Item 类,以及一系列允许 Stash 与缓存系统交互的 Driver 类。

每个 Driver 都会被初始化,然后传递给 Pool,此时开发人员可以简单地忘记它。开发人员还可以选择通过组合驱动程序将多个驱动程序一起使用。

Pool 类允许开发人员执行许多任务。有一些与维护相关的工作,例如运行 "Purge" 允许后端系统执行维护任务或设置新的日志或驱动程序类。Pool 还可以用来创建 Item 对象,单个或成组。

每个 Item 代表缓存中的一个单个对象。它有一个唯一的键,这意味着来自同一 Pool 的任何两个 Item 都将包含相同的值。一个 Item 可以从一个缓存系统中设置、获取和删除值。

键是一个字符串,代表缓存系统中的一个项。在最简单的情况下,键是一个字母数字字符串,它与缓存中的值有一对一的关系。

Stash 提供了一个称为 "栈" 的功能,允许开发人员将相关的项分组在一起,以便它们可以作为一个组被删除。这是通过给项一个嵌套结构来完成的,类似于计算机上的文件夹。就像文件夹一样,这通过在名称中添加斜杠来表示文件或缓存对象。

例如,像 "/models/users/34/profile" 这样的键可以允许开发人员通过该用户的 id 清除特定用户的用户数据,或者清除所有用户的数据,甚至所有模型的数据。它还可以允许开发人员将数据分成特定的部分,只加载所需的部分。

会话存储

提供的 Session 类在其构造函数中接受一个 Pool,然后可以使用内置的 PHP 方法、Session::registerHandler 静态函数或使用任何使用 SessionHandlerInterface 接口框架将其注册为会话处理程序。

驱动程序

Stash 当前支持以下后端

  • FileSystem
  • Sqlite
  • APC
  • Memcached
  • Redis
  • Ephemeral(仅限运行时)

Stash 还支持一个专门的 "复合" 驱动程序,它可以包含任何数量的上述驱动程序。这允许开发人员创建多层驱动程序,使用各种后端。

Symfony 集成

Stash Bundle 使得在 Symfony 项目中使用 Stash 变得更加简单。该插件将 Stash 作为服务暴露给开发者使用,并允许 Symfony 使用 Stash 作为会话处理程序。

许可证

Stash 采用 BSD 许可证。有关详细信息,请参阅 LICENSE 文件。