想要在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入门教程,欢迎大家学习!

yii2 redis封装类 php,yii2项目中如何使用redis相关推荐

  1. spring boot 注解_Spring-Boot项目中如何配置redis注解缓存?

    在pom中添加redis缓存支持依赖 <dependency><groupId>org.springframework.boot</groupId><arti ...

  2. redis php教程pdf,ThinkPHP中简单使用Redis

    首先在配置文件中配置Reids //Redis 配置 'DATA_CACHE_PREFIX' => 'Redis_', //缓存前缀 'DATA_CACHE_TYPE'=>'Redis', ...

  3. java redis缓存理解_Java项目中使用Redis缓存案例

    缓存的目的是为了提高系统的性能,缓存中的数据主要有两种: 1.热点数据.我们将经常访问到的数据放在缓存中,降低数据库I/O,同时因为缓存的数据的高速查询,加快整个系统的响应速度,也在一定程度上提高并发 ...

  4. php redis decr_Redis在PHP项目中的实际应用场景

    商品维度计数 对商品喜欢数,评论数,鉴定数,浏览数进行计数 说起电商,肯定离不开商品,而附带商品有各种计数(喜欢数,评论数,鉴定数,浏览数,etc) Redis的命令都是原子性的,你可以轻松地利用IN ...

  5. redis各种数据结构在项目中的应用场景

    购物车: hash: key:user:memberId:cart value:map map{key:skuid,value:cartItem} 2:提交订单时防止重复提交:订单交易码 String ...

  6. java redis缓存实例_spring项目整合ehcache和redis缓存实例

    项目描述 Spring的缓存机制非常灵活,可以对容器中任意Bean或者Bean的方法进行缓存,因此这种缓存机制可以在JavaEE应用的任何层次上进行缓存. Spring缓存底层也是需要借助其他缓存工具 ...

  7. java redis缓存使用_redis缓存在项目中的使用

    关于redis为什么能作为缓存这个问题我们就不说了,直接来说一下redis缓存到底如何在项目中使用吧: 1.redis缓存如何在项目中配置? 1.1redis缓存单机版和集群版配置?(redis的客户 ...

  8. 一看就懂系列之 详解redis的bitmap在亿级项目中的应用

    前言 这是一篇拖了很久的总结,项目中引入了redis的bitmap的用法,感觉挺高大上的,刨根问底,故留下总结一篇当作纪念. 说清楚几个问题: 1.bitmap的原理.用法. 2.bitmap的优势. ...

  9. 各种面试题 挺好 挺重要 项目中 有用 的地方

    说说你对缓存的理解? 1.使用缓存的目的: 提高应用程序的性能,减少到数据库的访问次数, 举个简单应用场景,比如微信群聊,当服务器收到一条消息的时候,需要把消息插入数据库.最原始的做法,就是每当有一条 ...

最新文章

  1. 这是2018年的第一场AI生态论坛,比以往来得更早一些
  2. Qt QPushButton圆形图片设置为背景
  3. bzoj 3675: [Apio2014]序列分割
  4. 数据结构与算法专题——第十题 输入法跳不过的坎-伸展树
  5. 使用Pandas 1.1.0进行稳健的2个DataFrames验证
  6. java todo error_Java全局异常处理(TODO)
  7. “Python字符串index()方法应用案例”文末三道思考题答案
  8. pythonkeywordis与 ==的差别
  9. 金格iweboffice axios上传单文件和多文件js代码
  10. 淘宝转化率突然下降怎么办?原来是这些原因
  11. Aggressive cows 二分
  12. jQuery对checkbox的各种操作
  13. mysql使用命令行导入sql脚本 报错无法插入中文
  14. 我们都知道李、张、王、刘是四大姓氏,那么四小姓氏你知道几个?
  15. 带你了解什么是抽象类,抽象类不能够被实例化为什么还有构造方法?
  16. Linux下shell命令:ps
  17. SQL 查询语句报错
  18. 修改cmd编码为UTF-8
  19. Flume官方文档翻译之(三)
  20. App store 下载软件失败的解决办法总结

热门文章

  1. 太早发文章其实并不是一个好事情
  2. maven中spring-boot-dependencies变量名冲突
  3. 在tomcat中使用context节点部署工程
  4. Android版‘音乐一点通’音乐播放器详情
  5. 基于IPSec的×××配置实验
  6. RHEAS 显示、输入中文
  7. [导入]在ASP.NET中跨页面实现多选
  8. hihocoder Tower Defense Game(树上贪心)
  9. hdu 5162(概率期望)
  10. NYOJ 115 城市平乱(图论Dijkstra)