yii2项目中如何使用redis

发布时间 - 2019-12-09 00:00:00    点击率:

想要在Yii2这个PHP框架中很好的使用redis键值存储,那么首先就要推荐yii2-redis这个官方的Github库。这个库能够很好的帮助我们在Yii2框架中使用redis,它提供缓存,Session以及ActiveRecord模式的支持。

安装yii2-redis库

推荐使用composer安装yii2-redis库,在你的项目根目录执行

php composer.phar require --prefer-dist yiisoft/yii2-redis:"~2.0.0"

或者将

"yiisoft/yii2-redis": "~2.0.0"

加入你的composer.json文件里,之后运行composer update,墙内真的很慢,耐心等待即可。

配置redis

要正确的使用这个扩展,你必须在你的应用程序的配置文件内,配置Connection类,一般来说,配置文件是config\web.php。

在你的组件里加入redis项目,如下:

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

如此之后,你便能正常的在yii2框架中使用redis。

示例

简单使用

我们先来看一段最简单的使用redis的代码:

$redis = Yii::$app->redis;
$key = 'username';
if ($val = $redis->get($key)) {
    return ['redis' => $val];
} else {
    $redis->set($key, 'Leon');
    $redis->expire($key, 5);
}
return ['redis' => 'no data'];

没有一行注释,但是就是一目了然是不是。

寻找username这个key,如果找不到,设置键值存储,并且过期时间是5秒钟。

这就是一个完整的使用redis的例子。

Cache

那么接下来,我们来看看怎么样将redis用在缓存上。

同样的,作为缓存使用,我们需要去配置文件里修改缓存项:

'components' => [
    'cache' => [
        // 'class' => 'yii\caching\FileCache',
        'class' => 'yii\redis\Cache',
    ],
],

如果你没有配置过redis组件,那么还需要在cache下配置redis:

'components' => [
    'cache' => [
        // 'class' => 'yii\caching\FileCache',
        'class' => 'yii\redis\Cache',
        'redis' => [
            'hostname' => 'localhost',
            'port' => 6379,
            'database' => 0,
        ],
    ],
],

示例代码如下,通俗易懂也就不过多解释了:

$cache = Yii::$app->cache;
$key = 'username';
if ($cache->exists($key)) {
    return ['cache' => $cache->get($key)];
} else {
    $cache->set($key, 'Leon', 5);
}
return ['cache' => 'no cache'];

Session

最后是redis用作session。也是要在组件中配置:

'components' => [
    'session' => [
        'name' => 'advanced-frontend',
        'class' => 'yii\redis\Session'
    ],
],

如果没有配置过redis,同样需要配置:

'components' => [
    'session' => [
        'name' => 'advanced-frontend',
        'class' => 'yii\redis\Session',
        'redis' => [
            'hostname' => 'localhost',
            'port' => 6379,
            'database' => 0,
        ],
    ],
],

示例代码如下:

$session = Yii::$app->session;
$key = 'username';
if ($session->has($key)) {
    return ['session' => $session->get($key)];
} else {
    $session->set($key, 'Leon');
}
return ['session' => 'no session'];

在简单的示范下,如何将redis这个高效的工具用好,则是考验大家的能力了。加油吧!

PHP中文网,有大量免费的Yii入门教程,欢迎大家学习!


# redis  # php  # composer  # json  # Session  # github  # YII  # 很好  # 配置文件  # 要在  # 键值  # 是一个  # 也就  # 则是  # 找不到  # 推荐使用  # 真的很 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 活动邀请函制作网站有哪些,活动邀请函文案?  Linux系统命令中tree命令详解  青岛网站建设如何选择本地服务器?  Laravel怎么使用Intervention Image库处理图片上传和缩放  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何在阿里云域名上完成建站全流程?  如何在服务器上三步完成建站并提升流量?  如何在云主机快速搭建网站站点?  Swift中swift中的switch 语句  如何用IIS7快速搭建并优化网站站点?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  高端云建站费用究竟需要多少预算?  如何在腾讯云服务器上快速搭建个人网站?  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  高防服务器:AI智能防御DDoS攻击与数据安全保障  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  用yum安装MySQLdb模块的步骤方法  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  新三国志曹操传主线渭水交兵攻略  浅析上传头像示例及其注意事项  微信小程序 配置文件详细介绍  香港服务器部署网站为何提示未备案?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  昵图网官网入口 昵图网素材平台官方入口  Laravel Session怎么存储_Laravel Session驱动配置详解  如何在万网ECS上快速搭建专属网站?  js代码实现下拉菜单【推荐】  如何选择可靠的免备案建站服务器?  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何在云指建站中生成FTP站点?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Linux系统运维自动化项目教程_Ansible批量管理实战  如何正确下载安装西数主机建站助手?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel如何实现API速率限制?(Rate Limiting教程)  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  网站页面设计需要考虑到这些问题  LinuxShell函数封装方法_脚本复用设计思路【教程】  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)