rodchyn / stash
Requires
- php: ^5.4|^7.0
- psr/cache: ~1.0
Requires (Dev)
- fabpot/php-cs-fixer: ^1.9
- phpunit/phpunit: 4.8.*
- satooshi/php-coveralls: 1.0.*
Provides
- psr/cache-implementation: 1.0.0
README
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 文件。