问题1:
laravel里,app('redis')->connection($connName);这个连接是会产生io的吧。
如果一个laravel php接口代码里,多次执行app('redis')->connection($connName),就是多次io对不,
例如:
static function a()
{
app('redis')->connection($connName);
....
}
static function b()
{
app('redis')->connection($connName);
....
}
static function c()
{
app('redis')->connection($connName);
....
}
function total()
{
self::a();
self::b();
self::c();
}
问题2:
redis->get前,是否有必要执行redis->exist()
例如:
if(redis->exist(key)) {
$value = redis->get(key)
...
}
不对,因为 Laravel 会把这些连接保存起来。具体代码 在
\Illuminate\Redis\RedisManager::connection
RedisServiceProvider 中, redis 使用的单例进行绑定 的,即单个请求中,只有第一次使用的时候会创建连接。
这是根据你业务的需要来确定的,非必要的话不建议。
根据 Redis 文档描述, get 的时间复杂度是 O(1) ,exist 是 O(N) 其中N是键检查的数量(也就是说单个键的话,都是 O(1))。