资讯专栏INFORMATION COLUMN

【完结】利用 Composer 完善自己的 PHP 框架(三)——Redis 缓存

icattlecoder / 2682人阅读

摘要:原文发表在我的个人网站利用完善自己的框架三缓存本教程示例代码见回顾上两篇文章中我们完成了视图加载类和邮件发送类的设计,完成了两个可插拔组件。相比使用文件作为缓存,拥有更高的性能更好地可维护性和更强大的操作。

原文发表在我的个人网站:利用 Composer 完善自己的 PHP 框架(三)——Redis 缓存


本教程示例代码见 https://github.com/johnlui/My-First-Framework-based-on-Composer


回顾

上两篇文章中我们完成了 View 视图加载类和 Mail 邮件发送类的设计,完成了两个可插拔组件。本篇文章中我们将构建另一个可插拔组件——Redis 接口,并使用它构建 MFFC 的高速缓存服务。

正文 Redis 简介

Redis 是一个高性能的 key-value 数据库,其 value 支持 StringMap(Hash)listsetsorted sets,中文翻译为 字符串、字典(哈希,在世界上最好的语言PHP 中属于 数组 的一部分)、列表、集合和有序集合。

我们可以用 Redis 作为高速缓存,存放系统经常需要访问的数据。相比使用文件作为缓存,Redis 拥有更高的性能、更好地可维护性和更强大的操作 API。

Redis 安装

Redis 官网为 http://redis.io/,可以很容易地下载安装并在命令行直接启动,它默认监听 6379 端口。

Redis 服务端装好并启动之后,并不能写一行代码直接开始使用了,我们还需要安装 客户端。目前有两种方式比较推荐:

安装 PHP 的 Redis 扩展。

使用 nrk/predis 包。

  

注意:作为 PHP 扩展安装时,请先打印出 phpinfo(),找到 Loaded Configuration File 这一项,编辑这个 php.ini 才有效。别忘了 重启 Apache 或者 php-fpm。

Redis 使用

我们在此选择 nrk/predis 包作为 Redis 驱动。编辑 composer.json

"require": {
  "codingbean/macaw": "dev-master",
  "illuminate/database": "*",
  "filp/whoops": "*",
  "nette/mail": "*",
  "predis/predis": "*"
},

运行 composer update,等待安装完成。

然后我们就要开始构建 Redis 类了,新建 services/Redis.php

set($key,$value);

    }
  }

  public static function get($key)
  {
    self::init();

    return self::$redis->get($key);
  }

  public static function delete($key)
  {
    self::init();

    return self::$redis->del($key);
  }

  private static function _setex($key,$value,$time)
  {
    self::$redis->setex($key,$time,$value);
  }

  private static function _psetex($key,$value,$time)
  {
    self::$redis->psetex($key,$time,$value);
  }
}

新建配置文件 config/redis.php

 "127.0.0.1",
  "port" => 6379
];

然后我们就可以开始测试啦~ 在 HomeController 中增加:

Redis::set("key","value",5,"s");
echo Redis::get("key");

运行一次后将上面一行注释掉,不断刷新,看 value 是否会在设定的时间结束后从页面上消失。

代码分析

我们创建了 Redis 类,提供了 ::set()::get()::delete() 三个静态方法,用于新增、获取和删除一对 key-value

::set() 方法支持设定 key-value 键值对的生命周期,并支持 hmsms 四个单位,代表时、分、秒和毫秒,这样就可以方便地用于缓存了。

严格意义上讲,缓存类至少还需要一个 判断 key 是否还存在 的基本操作,所以这个类还只是一个略微强大的 Redis 接口。

建造缓存接口作为练习,大家可以尝试自己动手写一下。选择新建 Cache 类或者在 Redis 类中新增接口均可。


【本系列完结】

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/61754.html

相关文章

  • 完结利用 Composer 完善自己 PHP 框架)——Redis 缓存

    摘要:原文发表在我的个人网站利用完善自己的框架三缓存本教程示例代码见回顾上两篇文章中我们完成了视图加载类和邮件发送类的设计,完成了两个可插拔组件。相比使用文件作为缓存,拥有更高的性能更好地可维护性和更强大的操作。 原文发表在我的个人网站:利用 Composer 完善自己的 PHP 框架(三)——Redis 缓存 本教程示例代码见 https://github.com/johnlui/My...

    Charlie_Jade 评论0 收藏0
  • SegmentFault 社区访谈 | mcfog:自由进出 Coding && A

    摘要:上次的访谈,介绍了下可爱的依云酱,回忆传送门。这里简单地介绍下龙女仆,全名小林家的龙女仆,为什么介绍这部剧呢因为设计狮颜值同学也安利了这部。剧情简介在独身又劳累的小林划重点一名程序员身边突然出现的穿着女仆服装的美少女托尔。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的访谈,介绍了下可爱的依云酱,回忆传送门。不...

    neroneroffy 评论0 收藏0
  • SegmentFault 社区访谈 | mcfog:自由进出 Coding && A

    摘要:上次的访谈,介绍了下可爱的依云酱,回忆传送门。这里简单地介绍下龙女仆,全名小林家的龙女仆,为什么介绍这部剧呢因为设计狮颜值同学也安利了这部。剧情简介在独身又劳累的小林划重点一名程序员身边突然出现的穿着女仆服装的美少女托尔。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的访谈,介绍了下可爱的依云酱,回忆传送门。不...

    lx1036 评论0 收藏0
  • laravel利用Redis来实现网站缓存读取

    摘要:丰富的数据类型支持二进制案例的及数据类型操作。原子的所有操作都是原子性的,同时还支持对几个操作全并后的原子性执行。丰富的特性还支持通知过期等等特性。完成上述配置之后我们就可以在应用代码中使用进行数据存取了。 教科书式开头————先看一下redis的简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value ...

    yankeys 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<