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


相关推荐: Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  海南网站制作公司有哪些,海口网是哪家的?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  怎样使用JSON进行数据交换_它有什么限制  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  Android GridView 滑动条设置一直显示状态(推荐)  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  利用vue写todolist单页应用  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  如何用PHP快速搭建高效网站?分步指南  如何快速搭建高效香港服务器网站?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  高端企业智能建站程序:SEO优化与响应式模板定制开发  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  Java解压缩zip - 解压缩多个文件或文件夹实例  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  怎么用AI帮你设计一套个性化的手机App图标?  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  如何在云指建站中生成FTP站点?  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  如何续费美橙建站之星域名及服务?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel如何实现模型的全局作用域?(Global Scope示例)  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  高防服务器租用指南:配置选择与快速部署攻略  手机软键盘弹出时影响布局的解决方法  如何获取上海专业网站定制建站电话?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel如何使用模型观察者?(Observer代码示例)  北京专业网站制作设计师招聘,北京白云观官方网站?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel如何实现API速率限制?(Rate Limiting教程)  如何快速生成凡客建站的专业级图册?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  高端云建站费用究竟需要多少预算?  Laravel如何处理异常和错误?(Handler示例)  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  详解MySQL数据库的安装与密码配置  Android利用动画实现背景逐渐变暗  JS弹性运动实现方法分析