学无先后,达者为师

网站首页 编程语言 正文

Laravel 不添加配置文件实现 Redis 切换库和设置 key 前缀

作者:笑逐颜凯 更新时间: 2022-10-11 编程语言

由于不同项目需要跨 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 方法的时候,还会保持旧的设置,这会让代码充满未知性。

如果有更好的解决方法请私信或留言,欢迎交流!

原文链接:https://blog.csdn.net/xzykai/article/details/127249496

栏目分类
最近更新