開發可能會用到的三種快取key

congcong發表於2021-05-14

為了防止資料庫壓力過大,我們開發時會對一些請求比較頻繁的介面資料進行快取,快取肯定需要key。下面寫三種我們可能用到key。做一個簡單基類的封裝.

第一種: 請求快取key

參考文章:Laravel 快取花樣耍(其實就是照抄,小姐姐寫的很好)

這個是我們經常會用到的.
採用url+引數,這樣就可以讓攜帶引數的url,比如分頁都有自己唯一的key值

 /**
     * 獲取當前請求的快取key
     * @return string
     */
    public function getCacheKey()
    {
        $url    = request()->url();
        $params = request()->query();
        $string = '';

        if (!empty($params)) {
            // 防止引數順序不同生成重複快取
            ksort($params);
            $string = http_build_query($params);
        }

        $fullUrl = "{$url}?{$string}";

        return sha1($fullUrl);
    }

第二種:需要對當前使用者請求路由進行加鎖的key

一些介面需要進行加鎖,比如防止使用者重複提交表單.
原來laravel也實現了,是針對ip進行獲取.

    /**
     * 對當前使用者進行加鎖的key
     * @return string
     */
    public function getUniqueLockKey()
    {
        return request()->fingerprint();
    }

第三種:對當前路由進行加鎖的key

一般不會用到,對當前方法進行加鎖的key,每次只允許一個使用者請求

    /**
     * 對當前方法進行加鎖的key
     * @return string
     */
    public function getLockKey()
    {
        $fullUrl    = request()->fullUrl();
        return sha1($fullUrl);
    }
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章