存储缓存的地方。

v1.0 2021-01-12 15:16 UTC

This package is auto-updated.

Last update: 2024-09-13 00:12:12 UTC


README

License Latest Stable Version Coverage Status Total Downloads

Stash通过缓存昂贵函数或代码的结果来简化加速代码的方法。某些操作,如数据库查询或调用外部API,运行时间较长,但往往在短时间内结果相同。这使得存储结果并在稍后调用它们变得更加高效。

安装

虽然推荐使用Composer,但Stash可以通过多种方法进行安装。

Composer

在Stash达到1.0版本的稳定API之前,建议在小的更新之前审查更改,尽管错误修复始终与向后兼容。

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

或者使用composer require命令

composer require tedivm/stash

Github

Stash的版本发布可在Github上找到。

文档

尽管这个README包含一些有用的数据,但主要网站上还有更多的信息,请访问stashphp.com

核心概念

主要类

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

每个Driver被初始化后传递给一个Pool,此时开发者可以简单地忽略它。开发者还可以通过组合驱动程序将多个驱动程序一起使用。

Pool类允许开发者执行多项任务。有一些维护相关的任务,例如运行“清除”以允许后端系统执行维护任务或设置新的日志或驱动程序类。Pool还可以用于创建Item对象,单个或成组。

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

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

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

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

会话存储

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

驱动程序

Stash目前支持以下后端

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

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

Symfony 集成

Stash 扩展包使在 Symfony 项目中使用 Stash 变得更加容易。该扩展包将 Stash 作为服务暴露给开发者使用,并允许 Symfony 使用 Stash 作为会话处理器。

许可证

Stash 在 BSD 许可证下授权。有关详细信息,请参阅 LICENSE 文件。