【redis专题(12)】正确优雅的在ThinkPHP5中使用redis

TP5的redis驱动在项目中使用遇到的问题

  1. 缓存的Key前缀取的是config中配置的,没有单独管理。
  2. 不能使用redis一些本身高级命令,比如sadd等。
  3. 一些常用的操作可以再次封装,比如分布式锁等。

key的管理类

key要统一管理起来,便于后续的阅读以及扩展

libsRedis

handler()->set($key, $value, ['nx', 'ex' => $expires]);
    }

    /**
     * 调用缓存类型自己的高级方法
     * @param $method
     * @param $args
     * @return mixed|void
     * @throws \Exception
     */
    public function __call($method,$args){
        if(method_exists($this->handler, $method)){
            return call_user_func_array(array($this->handler,$method), $args);
        }else{
            exception(__CLASS__.':'.$method.'不存在');
            return;
        }
    }
}

服务提供者配置

app/provider.php

// 应用容器绑定定义
return [
    'redis' => 'libs\Redis'
];

使用

$redis = $this->app['redis'];
$redis->hMSet(CacheKeyMap::memberUidHash($uid), ['name' => 'Joe', 'salary' => 2000]);

你可能感兴趣的:(thinkphp5,redis)