fhteam/laravel-cache-redis-extended

具有扩展功能的Redis缓存驱动程序

v0.0.1 2015-03-13 08:23 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:54:48 UTC


README

该项目目前正在开发中。代码可能已损坏。请等待1.0版本发布后再在生产中使用。

特性

  • 所有 Cache 门面方法扩展以接受数组作为键,以利用Redis MULTI操作(multi-get,-set,-forget等)
  • 在适当的位置使用Redis优化命令(在 has() 中的 EXISTS,在 add() 中的 SET...NX 等)
  • ❗ 在读取数据时无需执行 Cache::tags(...)Cache::get() 就足够了。因此,现在您可以在不知道某些缓存项关联的哪些标签的情况下查询缓存
  • 标签操作优化:在执行具有相同标签集的 Cache::tags() 时,将不会有第二次Redis查询
  • 序列化支持
    • 内置将Laravel模型的所有属性和关系序列化为单个缓存项的能力(Laravel无法缓存模型,只能缓存构建模型时的查询。Laravel中当前每个关系都是一个单独的查询,因此是一个单独的缓存项)
    • 能够为自定义对象类型添加新的序列化/反序列化程序

架构

Core <===> Serialization <===> Encoding
 |                                 | 
 |---->  TagVersionStorage  <------|
 
          + Utility +
  • 核心 主要包含Redis命令实现
  • 序列化 处理将缓存项打包和解包到适合放入缓存的结构中(编码后的项目值,过期数据,项目标签及其版本)。序列化依赖于编解码器将对象转换为易于序列化的内容。
    • 编解码器 包含低级序列化路径。它们接收数据(对象或其他内容)并输出可以传递给PHP的 serialize() 以获取编码对象表示的内容。每个编解码器都必须实现 CoderInterface
  • 标签版本存储 是一个针对Redis连接的单一实例,它管理标签版本:检索实际标签版本,比较它们,清除它们等。所有标签存储处理程序都应实现 TagVersionStorageInterface
    • PlainTagVersionStorage 是标签版本存储的基本版本,它不会在当前PHP进程之外共享任何有关标签版本的信息。您可以实现一个版本,该版本将实际标签版本存储在APC中,例如,如果查询Redis变得昂贵或需要避免。
  • 实用工具 包含一些低级特定工具,它们与子系统无关。
    • RedisConnectionTrait - 是一个特质,允许在整个项目中重用相同的Redis连接处理方案
    • Arr 包含一些低级数组操作
    • Time 包含一些时间管理操作

贡献

  • 代码风格 - Symfony 2
  • 尽可能使用类型提示
  • 尽可能使用phpdoc注释
  • 优先使用语言结构而不是字符串(例如,在需要类名的地方使用 MyClass::class,而不是 'MyClass'