構建本身的PHP框架(Redis)

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

 

Redis 簡介

'Redis' 是一個高性能的 'key-value' 數據庫,其 'value' 支持 'String'、'Map(Hash)'、'list'、'set' 和 'sorted sets',中文翻譯爲 字符串、字典(哈希,在'世界上最好的語言PHP' 中屬於 '數組' 的一部分)、列表、集合和有序集合。php

咱們能夠用 Redis 做爲高速緩存,存放系統常常須要訪問的數據。相比使用文件做爲緩存,Redis 擁有更高的性能、更好地可維護性和更強大的操做 API。git

Redis 安裝

Redis 官網爲 http://redis.io/ ,能夠很容易地下載安裝並在命令行直接啓動,它默認監聽 '6379' 端口。github

Redis 服務端裝好並啓動以後,並不能寫一行代碼直接開始使用了,咱們還須要安裝 '客戶端'。目前有兩種方式比較推薦:redis

1. 安裝 PHP 的 Redis 擴展數據庫

2. 使用 nrk/predis 包。json

注意:做爲 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',等待安裝完成。composer

而後咱們就要開始構建 Redis 類了,新建 'services/Redis.php':php-fpm

<?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' 是否會在設定的時間結束後從頁面上消失。

相關文章
相關標籤/搜索