做者:馬振亞sql
在此次的開發過程當中,咱們的需求中有一個是普通用戶能夠經過特定的機制申請成爲社長。由於只有部分人才能驗證成功,因此這個最開始想了兩種思路,一個是全部用戶發出申請成爲社長,而後社聯工做人員手動審覈是否予經過用戶的申請。可是這種思路的侷限性就在於社聯工做人員工做量比較大,須要人工審覈過程比較多,比較消耗時間並且出錯率比較高。後來你們討論了一下采用了一種比較新的思路,就是社聯那邊只進行一次操做,提供給社長一個驗證碼,這個驗證碼的正確性由後端代碼直接進行處理。後來你們討論到驗證碼的失效性與不可重複性,決定把驗證碼的有效時長設置爲10分鐘(從社聯申請出驗證碼)並且是單次驗證有效(驗證成功一次以後這個驗證碼就失效了)。數據庫
這時候咱們經過查閱資料決定了採用redis緩存數據庫支持上述接口的開發,redis是Nosql數據庫,是一個key-value存儲系統。雖然redis是key-value的存儲系統,可是redis支持的value存儲類型是很是的多,好比字符串、鏈表、集合、有序集合和哈希。後端
進過查閱資料討論獲得使用redis這樣的Nosql數據庫的通常場景以下:緩存
1) 當數據量的總大小一個機器放不下時;code
2) 數據索引一個機器的內存放不下時;blog
3) 訪問量(讀寫混合)一個實例放不下時。索引
4) 須要進行失效性控制。接口
在這個需求場景下,主要分爲驗證碼生成保存以及用戶驗證兩個部分。內存
上述步驟用到的主要redis相關方法有set方法(存入數據庫),get方法(從數據庫中取值),remove方法(驗證成功一次就失效,保證了單次有效性)。其中爲了保持10分鐘的預設有效性時間,須要在調用redis_set_cache()方法時加上時間參數。
redis_set_cache(key,value,time)