fhteam / laravel-cache-redis-extended
具有扩展功能的Redis缓存驱动程序
v0.0.1
2015-03-13 08:23 UTC
Requires
- php: >=5.5.0
- predis/predis: ~1.0
Requires (Dev)
- laravel/framework: >=4.0.0
- orchestra/testbench: 3.0.4
- phpunit/phpunit: 4.3.*
- squizlabs/php_codesniffer: 1.*
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
- 编解码器 包含低级序列化路径。它们接收数据(对象或其他内容)并输出可以传递给PHP的
- 标签版本存储 是一个针对Redis连接的单一实例,它管理标签版本:检索实际标签版本,比较它们,清除它们等。所有标签存储处理程序都应实现
TagVersionStorageInterface。PlainTagVersionStorage是标签版本存储的基本版本,它不会在当前PHP进程之外共享任何有关标签版本的信息。您可以实现一个版本,该版本将实际标签版本存储在APC中,例如,如果查询Redis变得昂贵或需要避免。
- 实用工具 包含一些低级特定工具,它们与子系统无关。
RedisConnectionTrait- 是一个特质,允许在整个项目中重用相同的Redis连接处理方案Arr包含一些低级数组操作Time包含一些时间管理操作
贡献
- 代码风格 - Symfony 2
- 尽可能使用类型提示
- 尽可能使用phpdoc注释
- 优先使用语言结构而不是字符串(例如,在需要类名的地方使用
MyClass::class,而不是'MyClass')