lpb / hyperf-cache-plus
hyperf/cache增强组件
v1.0.1
2022-05-16 02:12 UTC
Requires
- php: >=7.3
- ext-redis: *
- hyperf/cache: ^2.2
- hyperf/di: ^2.2
- hyperf/event: ^2.2
- hyperf/redis: ^2.2
- hyperf/utils: ^2.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- mockery/mockery: ^1.0
- phpstan/phpstan: ^1.0
- phpunit/phpunit: >=7.0
- swoole/ide-helper: ^4.5
Suggests
- swow/swow: Required to create swow components.
README
Cacheable支持多redis实例
# config/autoload/redis.php <?php declare(strict_types=1); return [ 'default' => [ 'host' => env('REDIS_HOST'), 'auth' => null, 'port' => env('REDIS_PORT'), 'db' => 0, 'pool' => [ 'min_connections' => 10, 'max_connections' => 100, 'connect_timeout' => 10.0, 'wait_timeout' => 3.0, 'heartbeat' => -1, 'max_idle_time' => 60, ], ], 'commonRedis' => [ 'host' => env('COMMON_REDIS_HOST'), 'auth' => null, 'port' => env('COMMON_REDIS_PORT'), 'db' => 0, 'pool' => [ 'min_connections' => 10, 'max_connections' => 50, 'connect_timeout' => 10.0, 'wait_timeout' => 3.0, 'heartbeat' => -1, 'max_idle_time' => 60, ], ] ]; # app/Service/TestService.php <?php namespace App\Service; use Hyperf\Cache\Annotation\Cacheable; class TestService { /** * @Cacheable(prefix="useRedisCache", ttl=60, listener="user-update", group="commonRedis_cacheNotEmpty") * @param int $id * @return array */ public function useRedisCache(int $id = 0): array { return [ 'id' => $id, 'group' => 'commonRedis', 'date' => date('Y-m-d H:i:s') ]; } /** * @Cacheable(prefix="useRedisCache2", ttl=60, listener="user-update") * @param int $id * @return array */ public function useRedisCache2(int $id = 0): array { return [ 'id' => $id, 'group' => 'default', 'date' => date('Y-m-d H:i:s') ]; } } # config/autoload/cache.php <?php declare(strict_types=1); return [ 'default' => [ 'driver' => Hyperf\Cache\Driver\RedisDriver::class, 'packer' => Hyperf\Utils\Packer\PhpSerializerPacker::class, 'prefix' => 'c:', ], 'commonRedis' => [ 'driver' => Hyperf\CachePlus\Driver\RedisDriver::class, 'packer' => Hyperf\Utils\Packer\PhpSerializerPacker::class, 'prefix' => 'dpss:', 'group' => 'commonRedis', ], 'commonRedis_cacheNotEmpty' => [ 'driver' => Hyperf\CachePlus\Driver\RedisDriver::class, 'packer' => Hyperf\Utils\Packer\PhpSerializerPacker::class, 'prefix' => 'dpss:', 'group' => 'commonRedis', 'cacheEmpty' => false, ], ];
Cacheable支持批量删除
# app/Command/Test.php <?php declare(strict_types=1); namespace App\Command; use App\Service\TestService; use Hyperf\CachePlus\Event\BatchDeleteListenerEvent; use Hyperf\Command\Command as HyperfCommand; use Hyperf\Command\Annotation\Command; use Hyperf\Di\Annotation\Inject; use Hyperf\Event\EventDispatcher; use Psr\Container\ContainerInterface; use Psr\EventDispatcher\EventDispatcherInterface; /** * @Command */ #[Command] class Test extends HyperfCommand { /** * @var ContainerInterface */ protected $container; /** * @Inject() * @var TestService */ protected $TestService; /** * @Inject() * @var EventDispatcherInterface */ protected $dispatcher; /** * @Inject() * @var EventDispatcher */ protected $eventDispatcher; public function __construct(ContainerInterface $container) { $this->container = $container; parent::__construct('1:1'); } public function configure() { parent::configure(); $this->setDescription('Hyperf Demo Command'); } public function handle() { $this->dispatcher->dispatch(new BatchDeleteListenerEvent('user-update', [1])); var_dump($this->TestService->useRedisCache(1)); var_dump($this->TestService->useRedisCache2(1)); } }