firehed / redis-psr16
PSR-16接口的Redis实现
Requires
- php: ^8.0
- ext-redis: ^5.3
- psr/simple-cache: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- phpstan/phpstan: ^1.8
- phpstan/phpstan-strict-rules: ^1.3
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
Provides
- psr/simple-cache-implementation: ^1.0 || ^2.0 || ^3.0
This package is auto-updated.
Last update: 2024-09-14 21:33:55 UTC
README
这是一个为PSR-16 SimpleCache接口编写的Redis实现。
这个库实际上使用了Redis支持的多个键操作符(如mget
等),与当时大多数其他实现不同。
安装和用法
安装: composer require firehed/redis-psr16
用法
$redis = new \Redis(); $redis->connect('yourhost', 6379); $redis->auth(['user' => 'youruser', 'pass' => 'yourpass']); $cache = new \Firehed\Cache\RedisPsr16($redis); // Use like any other PSR-16 implementation
如果未设置Redis::OPT_SERIALIZER
(或使用默认的Redis::SERIALIZER_NONE
),则此库将自动将其设置为Redis::SERIALIZER_PHP
。这将确保非字符串值被正确存储和检索。请注意,这意味着如果缓存了任何对象
,则在缓存操作期间将调用与序列化相关的任何魔术方法(__sleep()
、__wakeup()
、__serialize()
、__unserialize()
)。在向此库提供Redis之前设置该选项为任何其他值将使用设置的序列化器
use Firehed\Cache\RedisPsr16; use Redis; // Automatically sets SERIALIZER_PHP: $redis = new Redis(); // connect/auth $cache = new RedisPsr16($redis); // Uses specified SERIALIZER_JSON $redis = new Redis(); // connect/auth $redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_JSON); $cache = new RedisPsr16($redis);
配置
可以通过构造函数参数$mode
设置运行时模式
use Firehed\Cache\RedisPsr16; $cache = new RedisPsr16($redis, RedisPsr16::MODE_THROW);
-
RedisPsr16::MODE_THROW
在出现网络问题时可能会抛出异常(与直接使用Redis
扩展的方式相同)。抛出的异常将实现Psr\SimpleCache\CacheException
,符合PSR-16的要求。这将有助于暴露网络问题,并可能对日志记录和错误处理有益,但需要调用库来处理它们。这是默认模式。 -
RedisPsr16::MODE_FAIL
将防止抛出异常。任何错误,包括网络错误(当Redis
扩展抛出时),都将被视为失败。这可能会导致缓存未命中周围的误导性行为;如果您的应用程序需要知道“未命中”和“Redis不可用”之间的区别,请勿使用此模式。
可以通过RedisPsr16::setMode($mode)
在运行时调整模式。