日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

Laravel 不添加配置文件實(shí)現(xiàn) Redis 切換庫和設(shè)置 key 前綴

作者:笑逐顏凱 更新時(shí)間: 2022-10-11 編程語言

由于不同項(xiàng)目需要跨 Redis 庫來實(shí)現(xiàn)相關(guān)數(shù)據(jù)操作。
正常情況下,我們可以通過 config/database.php 來增加相應(yīng)配置選項(xiàng)即可。如果不想通過添加文件來實(shí)現(xiàn)跨庫操作可簡單如下操作:

use Illuminate\Support\Facades\Redis;

// 默認(rèn)連接配置
$redis = Redis::connection('default');
// 設(shè)置連接 2 庫
$redis->select(2);
// 設(shè)置 key 的前綴
$redis->setOption(\Redis::OPT_PREFIX, 'prefix:2'); 
// 操作 2 庫的相關(guān)數(shù)據(jù)
$a = $redis->get($key2);
// 設(shè)置連接 1 庫
$redis->select(1);
// 設(shè)置 key 的前綴
$redis->setOption(\Redis::OPT_PREFIX,'prefix:1');
// 操作 1 庫的相關(guān)數(shù)據(jù)
$b = $redis->get($key1);

這是偷懶的寫法,但是簡單,不用去配置。

另外,還有很多操作都類似,在對(duì)象中調(diào)用一個(gè)不可訪問方法時(shí)調(diào)用:
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?是會(huì)保存連接的,如果你在 A 方法設(shè)置了,忘了重置,到 B 方法的時(shí)候,還會(huì)保持舊的設(shè)置,這會(huì)讓代碼充滿未知性。

如果有更好的解決方法請(qǐng)私信或留言,歡迎交流!

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

欄目分類
最近更新