zoukankan      html  css  js  c++  java
  • 构建自己的PHP框架(Redis)

    完整项目地址: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 PredisClient;
    
    /**
    
     * 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' 是否会在设定的时间结束后从页面上消失。

  • 相关阅读:
    常用SQL语句
    一个很准的心理测试
    视图,存储实现行列转换
    『原创』+『转载』配置模拟器网络环境(访问局域网)Step by Step!
    『原创』老范的XML文档编辑程序——不是一般的山寨!(原创附程序)
    『原创』+『参考』基于PPC的图像对比程序——使用直方图度量
    『原创』.Net CF下ListView的数据绑定
    『原创』+『参考』使用C#在PPC的Today界面上的任务栏加入应用程序图标
    关于RDA远程访问数据库的一个例子(亲手完成,不容易啊)
    『原创』+『参考』亲手实验:使用C#在PPC中播放声音
  • 原文地址:https://www.cnblogs.com/evai/p/6214107.html
Copyright © 2011-2022 走看看