yiisoft/cache-redis

Yii 缓存库 - Redis 处理器

2.0.0 2023-07-10 16:05 UTC

This package is auto-updated.

Last update: 2024-09-16 07:40:45 UTC


README

Yii

Yii 缓存库 - Redis 处理器


Latest Stable Version Total Downloads Build status Scrutinizer Code Quality Code Coverage Mutation testing badge static analysis type-coverage

此包提供了 Redis 处理器并实现了 PSR-16 缓存。

要求

  • PHP 8.0 或更高版本。

安装

此包可以使用 Composer 进行安装。

composer require yiisoft/cache-redis

通用用法

有关客户端实例和连接配置的更多信息,请参阅 predis/predis 包的文档。

/**
 * @var \Predis\ClientInterface $client Predis client instance to use.
 */
$cache = new \Yiisoft\Cache\Redis\RedisCache($client);

除了在 PSR-16 接口中定义的功能外,此包不包含与缓存交互的任何附加功能。

$parameters = ['user_id' => 42];
$key = 'demo';

// try retrieving $data from cache
$data = $cache->get($key);

if ($data === null) {
    // $data is not found in cache, calculate it from scratch
    $data = calculateData($parameters);
    
    // store $data in cache for an hour so that it can be retrieved next time
    $cache->set($key, $data, 3600);
}

// $data is available here

为了删除值,您可以使用

$cache->delete($key);
// Or all cache
$cache->clear();

为了更有效地处理值,应使用批处理操作

  • getMultiple()
  • setMultiple()
  • deleteMultiple()

此包可以作为 Yii Caching Library 的缓存处理器使用。

支持 Redis 集群

此包通过 Predis 包实现了对 Redis 集群 的支持。

例如,如果您的集群配置有三个主节点和三个从节点,则客户端配置可能如下所示

$client = new \Predis\Client([
        ['host' => 'redis-node-1', 'port' => 'redis-node-port-1',],
        ['host' => 'redis-node-2', 'port' => 'redis-node-port-2',],
        ['host' => 'redis-node-3', 'port' => 'redis-node-port-3',],
        ['host' => 'redis-node-4', 'port' => 'redis-node-port-4',],
        ['host' => 'redis-node-5', 'port' => 'redis-node-port-5',],
        ['host' => 'redis-node-6', 'port' => 'redis-node-port-6',],
    ],
    [
        'cluster' => 'redis',
        'parameters' => [
            'password' => 'Password',
        ],
    ]
);
$cache = new \Yiisoft\Cache\Redis\RedisCache($client);

Predis 会根据命令中指定的键自动将命令路由到集群中的适当节点。

您可以通过实现 \Predis\Distribution\DistributorInterface 来创建客户端用于在服务器集群中分配键的自定义分发器。

然后,您的配置可能如下所示

$client = new \Predis\Client([
        ['host' => 'redis-node-1', 'port' => 'redis-node-port-1',],
        ['host' => 'redis-node-2', 'port' => 'redis-node-port-2',],
        ['host' => 'redis-node-3', 'port' => 'redis-node-port-3',],
        ['host' => 'redis-node-4', 'port' => 'redis-node-port-4',],
        ['host' => 'redis-node-5', 'port' => 'redis-node-port-5',],
        ['host' => 'redis-node-6', 'port' => 'redis-node-port-6',],
    ],
    [
        'cluster' => static function () {
            $distributor = new \CustomDistributor(); // Your custom distributor
            $strategy = new \Predis\Cluster\PredisStrategy($distributor);

            return new \Predis\Connection\Cluster\PredisCluster($strategy);
        },
        'parameters' => [
            'password' => 'Password',
        ],
    ]
);

文档

如果您需要帮助或有问题,Yii 论坛 是一个好去处。您还可以查看其他 Yii 社区资源

许可

Yii 缓存库 - Redis 处理器是免费软件。它根据 BSD 许可证的条款发布。有关更多信息,请参阅 LICENSE

Yii 软件 维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack