首頁 >資料庫 >Redis >使用Redis存放token

使用Redis存放token

齐天大圣
齐天大圣原創
2020-05-08 10:20:143170瀏覽

相信做過微信公眾號開發的phper都知道,調取微信的介面都需要帶access_token的。 access_token是公眾號的全域唯一介面呼叫憑證。這個access_token每天取得的次數有限制,所以,我們需要自己保存。另外這個token也是有有效期限的。所以,我們需要定時刷新,重新取得access_token.

使用何種方式來保存呢?如果使用mysql的話,一個表只來存放一條數據,感覺大材小用而且不太優雅。使用檔案來保存的話,效能不是太好,另外還是稍微有點麻煩的,需要考慮髒讀的問題。

下面我來介紹一種簡單優雅且效能很好的方式,使用Redis來存放token。

兩個指令

Redis有很多種資料類型,在這裡,我們只需要最簡單的資料類型string下的2個簡單的指令,就可以完成我們需要的功能。

  • set

  • get

#這兩個指令都非常簡單,set是為一個鍵設定一個字串。

$redis->set('name', 'monkeyking');

上面表示,將鍵name的值設為monkeyking。另外,它還可以為鍵設定過期時間。可以設定過期時間實在太方便了。

$redis->set('name', 'monkeyking', ['ex' => 100]);
# 过期时间设置为100秒后

get指令是取得一個字串。下面程式碼的意思是取得到鍵name的值。

$redis->get('name');

使用redis除了效能好之外,還有一個非常好的地方。因為它是單執行緒架構,所有的命令都是按順序執行的。上一條指令執行完後,下一條才會接著執行,所以不會出現髒讀的狀況。

實作功能

介紹完set及get後,就可以來完成我們的需求了。

微信取得access_token的接口,返回的資料格式如下:

{"access_token":"xEaew2sI2dsAd","expires_in":7200}

我們只需要將xEaew2sI2dsAd存起來,並設定下過期時間就行了。

程式碼如下:

function setAccessToken ($token) {
    return $redis->set(
        'wx_access_token', 
        $token, 
        ['ex'=>7000]
    );
}

function getAccessToken ()
{
    return $redis->get('wx_access_token')
}

上面有一個注意點,過期時間需要設定比7200小一些。防止極端狀況,例如剛好在7200秒拿到token,去微信呼叫介面。因為調取介面也是需要時間的,這樣token就會過期了,導致錯誤。

使用Redis訪問token非常簡單方便哦!大家都可以試試。

以上是使用Redis存放token的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:redis自增計數下一篇:redis自增計數