Laravel 不添加配置文件实现 Redis 切换库和设置 key 前缀
由于不同项目需要跨 Redis
库来实现相关数据操作。
正常情况下,我们可以通过 config/database.php
来增加相应配置选项即可。如果不想通过添加文件来实现跨库操作可简单如下操作:
use Illuminate\Support\Facades\Redis;
// 默认连接配置
$redis = Redis::connection('default');
// 设置连接 2 库
$redis->select(2);
// 设置 key 的前缀
$redis->setOption(\Redis::OPT_PREFIX, 'prefix:2');
// 操作 2 库的相关数据
$a = $redis->get($key2);
// 设置连接 1 库
$redis->select(1);
// 设置 key 的前缀
$redis->setOption(\Redis::OPT_PREFIX,'prefix:1');
// 操作 1 库的相关数据
$b = $redis->get($key1);
这是偷懒的写法,但是简单,不用去配置。
另外,还有很多操作都类似,在对象中调用一个不可访问方法时调用:
src/Illuminate/Redis/Connections/Connection.php
/**
* Pass other method calls down to the underlying client.
*
* @param string $method
* @param array $parameters
* @return mixed
*/
public function __call($method, $parameters)
{
if (static::hasMacro($method)) {
return $this->macroCall($method, $parameters);
}
return $this->command($method, $parameters);
}
最后谢谢来自 Rache1 建议:
最好不要让你的代码充满魔法,
Redis::connection
是会保存连接的,如果你在 A 方法设置了,忘了重置,到 B 方法的时候,还会保持旧的设置,这会让代码充满未知性。
如果有更好的解决方法请私信或留言,欢迎交流!
本作品采用《CC 协议》,转载必须注明作者和本文链接
REDIS OPT 提供了常量,应该使用
\Redis::OPT_PREFIX
而不是使用魔法数字2
,因为在未来有可能会变化,你直接写个2
别人也无法推断出到底这个2
代表什么。其次,最好不要让你的代码充满魔法,
Redis::connection
是会保存连接的,如果你在 A 方法设置了,忘了重置,到 B 方法的时候,还会保持旧的设置,这会让代码充满未知性。