【Yii2】使用Redis

在 Yii2 中使用 Redis 非常简单。首先,确保您已经安装了 Redis 扩展,并在 common/config/main-local.php 文件中配置了 Redis 组件:

return [
    // ...
    'components' => [
        // ...
        'redis' => [
            'class' => 'yii\redis\Connection',
            'hostname' => 'localhost',
            'port' => 6379,
            'database' => 0,
        ],
        // ...
    ],
    // ...
];

然后,您可以在 Yii2 应用程序中使用 Redis 来存储和检索数据。

一下是两种连接方式:

1.Redis::getRedisInstance()->getRedisConn();

这种方法来自 common\components\Redis 类。它是一个自定义的 Redis 组件,通常在 common\config\main-local.php 文件中配置。这个组件提供了一些额外的功能,例如自动重连、记录日志等。使用这种方法获取 Redis 缓存连接实例时,您将获得一个封装了 Redis 连接的对象,该对象提供了一些额外的方法,例如 getRedisConn()。 

//使用助手函数
use common\helpers\Redis;

Redis::getRedisInstance()->getRedisConn();

2.Yii::$app->redis;

这种方法是通过 Yii2 的依赖注入容器获取 Redis 缓存组件的实例。默认情况下,Yii2 不包含自定义的 Redis 组件,因此您需要在 common\config\main-local.php 文件中手动配置 Redis 组件。使用这种方法获取 Redis 缓存连接实例时,您将直接获得 Redis 连接对象,而不是封装了 Redis 连接的对象。

use Yii;

$redis = Yii::$app->redis;

总之,Redis::getRedisInstance()->getRedisConn();Yii::$app->redis; 都可以用于获取 Redis 缓存连接实例,但它们分别使用自定义的 Redis 组件和 Yii2 的依赖注入容器。如果您需要使用自定义的 Redis 组件提供的额外功能,可以使用 Redis::getRedisInstance()->getRedisConn();。否则,您可以使用 Yii::$app->redis;

3.以下是一些常见的 Redis 操作示例:


use Yii;

$redis = Yii::$app->redis;


// 1.将值存储到 Redis 缓存:
$redis->set('key', 'value');

// 2.从 Redis 缓存中获取值:
$value = $redis->get('key');

// 3.将值存储到 Redis 缓存的哈希集中:
$redis->hset('hash', 'field', 'value');

// 4.从 Redis 缓存的哈希集中获取值:
$value = $redis->hget('hash', 'field');

// 5.将值添加到 Redis 缓存的列表中:
$redis->lpush('list', 'value');

// 6. 从 Redis 缓存的列表中获取值:
$value = $redis->rpop('list');

// 7.将值添加到 Redis 缓存的集合中:
$redis->sadd('set', 'value');

// 8.检查 Redis 缓存的集合中是否存在某个值:
$exists = $redis->sismember('set', 'value');

这些示例仅涵盖了 Redis 缓存组件的基本操作。实际上,Yii2 的 Redis 缓存组件支持 Redis 的大多数操作,您可以在 https://www.yiiframework.com/extension/yiisoft/yii2-redis 中找到完整的操作列表。