完整项目地址:https://github.com/Evai/Aier

Redis 简介

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

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

Redis 安装

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

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

1. 安装 PHP 的 Redis 扩展

2. 使用 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':

<?php

use Predis\Client;

/**

 * Redis

 */

class Redis

{

    const CONFIG_FILE = '/config/redis.php';

    protected static $redis;

    /**
* Redis constructor.
*/
private static function init() { self::$redis = new Client(require BASE_PATH . self::CONFIG_FILE); } /**
* @param $key
* @param $value
* @param int $timeout
* @param string $unit
* @return mixed
*/
public static function set($key, $value, $timeout = 0, $unit = 's') {
self::init(); $result = self::$redis->set($key, $value); if ($timeout > 0)
{ switch ($unit)
{
case 's': //秒 self::$redis->expire($key, $timeout); break; case 'unix': //unix时间戳(单位:秒) self::$redis->expireAt($key, $timeout); break; case 'ms': //毫秒 self::$redis->pExpire($key, $timeout); break; case 'munix': //unix时间戳(单位:毫秒) self::$redis->pExpireAt($key, $timeout); break; default: break;
} } return $result; } /**
* @param $key
* @return string
*/
public static function get($key) {
self::init(); return self::$redis->get($key); } /**
* @param $key
* @return mixed
*/
public static function delete($key) {
self::init(); return self::$redis->del($key);
} }

新建配置文件 'config/redis.php':

<?php

return [

    'host'     => '127.0.0.1',

    'password' => null,

    'port'     => 6379,

    'database' => 0

];

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

Redis::set('name', 'Evai', 5);

echo Redis::get('name');

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

最新文章

  1. delphi 对Tmemo指定的行写入
  2. 关于OpenGL的性能方面的技巧(不时更新)
  3. Activiti 学习资料收集
  4. kindEditort图片自动上传
  5. 详细记录python的range()函数用法
  6. python练习程序(c100经典例13)
  7. CSS其他
  8. Linux驱动编程--基于I2C子系统的I2C驱动的Makefile
  9. 阿里druid 介绍及配置
  10. 剑指offer-面试题20.顺时针打印矩阵
  11. SICP 解题集 — SICP 解题集
  12. Java 并发 中断线程
  13. 前端CSS的工程化——掌握Sass这四大特性就够了
  14. 笔记︱风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)
  15. Python基础(迭代器)
  16. FBV和CBV装饰器
  17. selenium选择器_css属性选择器
  18. 利用python 数据分析入门,详细教程,教小白快速入门
  19. [HDU2475]Box
  20. 老男孩linux实战培训初级班第二次课前考试题

热门文章

  1. 如何知道刚刚插入数据库那条数据的id
  2. ConcurrentLinkedQueue的实现原理分析
  3. 博客搬家啦! -----&gt; http://ronghaopger.github.io/
  4. 【前端统计图】echarts实现简单柱状图
  5. base64码通过http传输 +号变 空格 问题解决
  6. ubuntu系统安装和配置
  7. Opencv Surf算子中keyPoints,描述子Mat矩阵,配对向量DMatch里都包含了哪些好玩的东东?
  8. 【codeforces 750E】New Year and Old Subsequence
  9. vector, list, deque的选用(vector适用少量对象,list适用大量对象),以及效率问题
  10. MySQL实现类似Oracle中的nextval和currval